一.shell函数
1.什么是shell函数
将命令序列按格式写在一起
可方便重复使用命令序列
2.shell函数的格式
function 函数名{
命令序列
}
或
函数名() {
命令序列
}
3.函数返回值
return表示退出函数并返回一个退出值,脚本中可以用$?变量显示该值使用原则:
1、函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码
2、退出状态码必须是0~255,超出时值将为除以256取余
5.函数变量的作用范围
函数在shell脚本中仅在当前shell环境中有效
Shell脚本中变量默认全局有效
将变量限定在函数内部使用local命令
6.递归
函数调用自己本身的函数
7.递归目录
例:
mkdir -p /root/bin/aa/bb/cc/dd ; touch /root/bin/aa/bb/cc/dd/abc.txt,输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件
二.数组
1.定义数组
方法1.
数组名=(值0 值1 值2 …)
中间以空格间隔,如果值为符号內型需加单引号或双引号
方法2.
数组名= ($列表变量)
方法3.
数组名=([n]=值1 …)
以空格间隔,n代表元素的下标,第一元素的下标从0开始
方法4.
数组名[n]=值
n代表元素的下标,第一元素的下标从0开始
获取数组的属性
**获取数组的所有元素的值,以列表形式输出的
${数组名[*]}
${数组名[@]}
-
获取数组的长度 ${#数组名[*]} ${#数组名[@]}
判断数组是否完整
${数组名[数组长度]}
如果此值为空,则代表数组完整,因为最后一个元素的下标是 数组长度减一
获取数组的某一个元素的值
${数组名[n]}
代表元素的下标,范围为 0 ~ 长度减一
数组分片 截取
${数组名[@]:起始位置:截取长度} 起始位置是从0算起的
*
数组字符替换
${数组名[@]/旧字符/新字符}
会替换所有元素上能匹配到的字符但是这是临时替换不会影响原有数组,可通过重新赋值实现替换原有数组
数组名=(${数组名[@]/旧字符/新字符} )
删除数组
unset 数组名[n] 删除某一个元素
unset 数组名[*] 删除整个数组
追加数组
数组名+=(元素1 元素2 ...)
数组名=("${数组名[@]}" 元素1 元素2 ...)
数组名[数组长度]=元素值
数组名[n]=值