Shell函数的定义
Shell函数
1.使用函数可以避免代码重复
2.使用函数可以将大的工程分割为若干小的功能模块,代码的可读性更强
再脚本内定义函数主要有两种方式
Shell函数返回值
1.在函数内用return退出函数并返回函数的值,在函数外用echo $?获取返回值
(注:返回值的范围只能在0~255,超过部分需处以256取余)
2.在函数内用echo输出值,在函数体外可以用
变量=$(函数名)获取函数的返回值
函数的传参
如何给函数传参
1)函数内部
- 函数体内部的 $1 $2 代表的是调用函数时,函数后面跟的位置函数
- 在函数体内部的 $# 代表调用函数时,函数后面跟的参数个数
- 在函数体内部的$@ $*代表调用函数时,函数后面跟的所有参数
2)函数外部
- 函数体外的 $1 $2 代表的是执行脚本时,脚本后面跟的位置参数
- 在函数体外时,$#代表脚本后面跟的参数个数
- 在函数体外时,$@ $*代表脚本后面跟的所有参数
不管在函数体内还是函数体外,$0都代表脚本本身
函数变量的作用范围
- 函数默认只能脚本内的Shell环境有效(使用source执行脚本,也会影响系统的当前Shell环境)
- 脚本中的变量默认全局有效(即函数体内外都有效)
- 在函数体内执行 local变量,可将变量限定在函数体内部使用
函数调用自己本身的函数实现递归
1)阶乘
2)目录
$2:为空格字符
数组
数组的作用:数组可以将以空格相间隔的值当作一个整体的元素;可以将里面的元素替换;删除;增加等。
数组包括的数据类型:
- 数值类型
- 字符类型
使用" "或’ ’ 定义
数组定义的方法:
方法一:
变量名=(元素1 元素2 元素3)
输出数组里面的内容:echo ${变量名[@]}
echo ${arry1[@]} = echo ${arry1}[*]}
方法二:
变量名=([下标]=元素 [下标]=元素…)
输出数组里面的内容:echo ${变量名[@]}
方法三:
列表名=“值0 值1 值2 …”
数组名=($列表名)
方法四:
数组名[0]=“值”
数组名[1]=“值”
数组名[2]=“值”
Shell数组的操作
1.统计元素的个数,也叫数组的长度:echo ${#变量名}
2.输出某一个元素的值
echo ${变量名[下标]}
3.获取下标数也可查看数组内是否缺少元素
echo ${!变量名[下标]}
4.遍历数组里面的值 让里面的值相加
5.数组的切片
echo ${arrry4[@]:下标数:下标数字节}
6.数组里的值替换
echo ${arrry4[@]/旧值/新值}
临时替换:永久替换
arry4=${arry4[@]/旧值/新值}
echo ${arry4[@]}
7.数组删除
unset
Shell数组追加元素
方法一:
变量[下表数]=元素值
方法二:
变量[${#变量[@]}]=值
方法三:
变量=(“${变量[@]}” 值1 值2 值3)
方法四:
变量+=(值1 值2 值3 值4)