shell脚本之函数及数组

news/2025/2/12 2:42:19/

shell脚本之函数及数组

  • 一函数
    • 1.1函数的作用
    • 1.2函数的基本格式
    • 1.3函数的注意事项
    • 1.4函数调用的方法
    • 1.5函数的返回值
    • 1.6函数的传参
    • 1.7在外部调用函数
    • 1.8函数变量的作用范围
    • 1.9函数的递归
  • 二.数组
    • 2.1shell数组的定义
    • 2.2定义属组的方式
    • 2.3数组的数据类型
    • 2.4获取数组的数据列表
    • 2.5获取组长度
    • 2.6获取数组下对应的值
    • 2.7数组的常用操作
      • 2.7.1数组的遍历
      • 2.7.2数组的替换
      • 2.7.3数组删除和指定下标的值删除
      • 2.7.4数组追加元素
      • 2.7.5查看所有数组--declare -a
  • 三.冒泡排序

一函数

1.1函数的作用

  • 语句决定义成函数约等于别名,定义函数,再引用函数
  • 封装的可重复利用具有特定功能的代码

1.2函数的基本格式

 方法一:【function】函数名 (){命令序列【return  x】            #使用return或者exit可以显示的结束函数}方法二:函数名(){命令序列}

1.3函数的注意事项

1.直接写函数中调用
2.函数直接写函数名同名函数后一个生效
3.调用函数一定要先定义
4.只要先定义了调用的其他函数定义顺序无关

1.4函数调用的方法

示例1:
在这里插入图片描述
在这里插入图片描述
示例2:

在这里插入图片描述

1.5函数的返回值

  • return表示退出函数并返回一个退出值,脚本中可以使用$?变量表示该值

  • 函数的使用规则

    • 函数一结束就取反回值,因为$?变量只返回执行的最后一条命令的 退出状态
    • 退出状态码必须是0~255 ,超出时值将为除以256取余

示例:

在这里插入图片描述

1.6函数的传参

在shell中,调用函数时可以向其传递参数。在函数体内部,通过$n的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…即使用位置参数来实现参数传递

示例

在这里插入图片描述

1.7在外部调用函数

在外部调用命令需要先source一下。然后调用函数,再调用函数中的变量

实例
在这里插入图片描述
示例2:在脚本中调用

在这里插入图片描述

1.8函数变量的作用范围

  • 函数在shell脚本中仅在当前shell环境中有效
  • shell脚本中变量默认全局有效‘
  • 将变量限定在函数内部使用local命令

示例:

在这里插入图片描述
示例2:
在这里插入图片描述

1.9函数的递归

函数调用自己本身的函数
实例:求任意数的阶乘

在这里插入图片描述

二.数组

2.1shell数组的定义

  • 数组中可以存放多个值。bash shell只支持一维数组
  • 数据元素的下标由0开始
  • shell数组用括号来表示,元素用“空格”符号分割开
  • 在shell语句中,使用,遍历数组的时候,数组格式要写成 a r r [ @ ] 或 {arr[@]}或 arr[@]{arr[*]}

2.2定义属组的方式

方法一;

在这里插入图片描述
方法二:
在这里插入图片描述

2.3数组的数据类型

  • 数值类型
  • 字符类型:使用“”或‘’定义

示例:
在这里插入图片描述

2.4获取数组的数据列表

示例:
在这里插入图片描述

2.5获取组长度

在这里插入图片描述

2.6获取数组下对应的值

在这里插入图片描述

2.7数组的常用操作

2.7.1数组的遍历

在这里插入图片描述

2.7.2数组的替换

在这里插入图片描述

2.7.3数组删除和指定下标的值删除

在这里插入图片描述

2.7.4数组追加元素

方法一:直接使用下标进行元素追加
在这里插入图片描述
方法二:将数组的长度作为下标进行追加元素

在这里插入图片描述
方法三:使用+进行追加
在这里插入图片描述

2.7.5查看所有数组–declare -a

在这里插入图片描述

三.冒泡排序

在这里插入图片描述


http://www.ppmy.cn/news/1038380.html

相关文章

【100天精通python】Day38:GUI界面编程_PyQT从入门到实战(中)

目录 专栏导读 4 数据库操作 4.1 连接数据库 4.2 执行 SQL 查询和更新: 4.3 使用模型和视图显示数据 5 多线程编程 5.1 多线程编程的概念和优势 5.2 在 PyQt 中使用多线程 5.3 处理多线程间的同步和通信问题 5.3.1 信号槽机制 5.3.2 线程安全的数据访问 Q…

稳如磐石!亿级别MySQL大表迁移的解密

MySQL 作为当前应用最广泛的开源关系型数据库之一,具有高性能、稳定性和易用性等特性,是许多网站、应用和商业产品的主要数据存储。在一些场景中,如果出现单表行数上亿的情况,就可能需要开发和 DBA 对大表进行优化:分表…

【Ubuntu】简洁高效企业级日志平台后起之秀Graylog

简介 Graylog 是一个用于集中式日志管理的开源平台。在现代数据驱动的环境中,我们需要处理来自各种设备、应用程序和操作系统的大量数据。Graylog提供了一种方法来聚合、组织和理解所有这些数据。它的核心功能包括流式标记、实时搜索、仪表板可视化、告警触发、内容…

华为OD机试真题【字母组合】

1、题目描述 【字母组合】 数字0、1、2、3、4、5、6、7、8、9分别关联 a~z 26个英文字母。 0 关联 “a”,”b”,”c” 1 关联 “d”,”e”,”f” 2 关联 “g”,”h”,”i” 3 关联 “j”,”k”,”l” 4 关联 “m”,”n”,”o” 5 关联 “p”,”q”,”r” 6 关联 “s”,”t” 7…

搭建Web服务器并用cpolar发布至公网访问

本地电脑搭建Web服务器并用cpolar发布至公网访问 文章目录 本地电脑搭建Web服务器并用cpolar发布至公网访问前言1. 首先在电脑安装PHPStudy、WordPress、cpolar2. 安装cpolar,进入Web-UI界面3. 安装wordpress4. 进入wordpress网页安装程序5. 利用cpolar建立的内网穿…

Arcgis连续数据的分类(求不同值域的面积)

问题描述:如果得到的一个连续的影响数值数据,但是我们想求取某一段值域的面积占比,需要进行以下操作: 1.按照数值重分类,将某段数值变成一个类别 2.栅格转矢量,再求取面积

Socks5代理在多线程爬虫中的应用

在进行爬虫开发过程中,我们常常需要处理大量的数据,并执行多任务并发操作。然而,频繁的请求可能会引起目标网站的反爬机制,导致IP封禁或限制访问。为了规避这些限制,我们可以借助Socks5代理的强大功能,通过…

车规级半导体分类(汽车芯片介绍)

车规级半导体,也被称为“汽车芯片”,主要应用于车辆控制装置、车载监控系统和车载电子控制装置等领域。这些半导体器件主要分布在车体控制模块上,以及车载信息娱乐系统方面,包括动力传动综合控制系统、主动安全系统和高级辅助驾驶…