目录
Shell脚本之函数及数组
一、函数
函数的作用
语句块定义成函数约等于别名,定义函数,再引用函数
封装的可重复利用的具体特定功能的代码
函数的基本格式
法一:
[function] 函数名 (){
命令序列
[return x]
}
//使用return或者exit可以显示的结束函数
法二:
函数名(){
命令序列
}
函数注意事项
直接写函数中调用
函数直接写函数名同名函数后一个生效
调用函数一定要先定义
只要先定义了调用的其他函数定义顺序无关
函数调用方法
例1:
例2:
函数的返回值
return表示退出函数并返回一个退出值,脚本中可以用$?变量表示该值
函数的使用原则
函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
退出状态码必须是0~255,超出时值将为除以256取余
例:
函数的传参
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…即使用位置参数来实现参数传递
例:
外部调用函数
在外部调用命令需要先source一下,然后再调用函数,再调用函数中的变量
例1:
例2:在脚本中调用
函数变量的作用范围
函数在shell脚本中仅在当前shell环境中有效
shell脚本中变量默认全局有效
将变量限定在函数内部使用local命令
例1:
例2:
函数的递归
函数调用自己本身的函数
例:求任意的阶乘
二、数组
数组的定义
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组)
数组元素的下标由 0 开始。
Shell 数组用括号来表示,元素用"空格"符号分割开
在shell语句中,使用、遍历数组的时候,数组格式要写成 ${arr[@]} 或 ${arr[*]}
定义数组的方法
法一:数组名=(value1 value2 ... valuen)
法二: 数组名=([0]=value1 [1]=value2 [2]=value3 ...)
法三:
数组名[0]="value"
数组名[1]="value"
数组名[2]="value"
数组的数据类型
数值类型
字符类型:使用" " 或 ' ' 定义
例:
获取数组的数据列表
echo ${数组名[*]}
echo ${数组名[@]}
例:
获取数组长度
echo ${数组名#[*]}
echo ${数组名#[@]}
例:
获取取数组下标对应的值
数组名=(元素0 元素1 元素2 ...) //定义数组
echo ${数组名[索引值]} //输出数组索引值对应的元素,索引值从0开始
例:
数组的常用操作
数组的遍历
数组的切片
数组的替换
数组删除和指定下标的值删除
数组追加元素
法一:直接使用下标进行元素追加
数组名[下标]=变量
法二:将数组的长度作为下标进行追加元素
数组名[${数组名[@]}] =变量名
法三:使用 “ + - ” 进行追加
数组名+=(变量1 变量2)
查看所有数组
declare -a
三、冒泡排序