数组
-
定义
ary="a b c str" # 定义字符串 ary=(a b c str) # 定义字符数组
-
参数说明
${ary[@]}
或${ary[*]}
- 返回:数组中的全部元素
- 结果:
a b c def
${ary[0]}
- 返回:数组中的第一个元素
- 结果:
a
${#ary[@]}
或${#ary[*]}
- 返回:数组元素总个数
- 结果:4
${#ary[3]}
- 返回:第 4 个元素的长度,即
def
的长度 - 结果:3
- 返回:第 4 个元素的长度,即
ary[3]=abcde
- 将数组中第 4 个元素重新定义为
abcde
- 将数组中第 4 个元素重新定义为
-
判断数组中是否包含某个元素
ary=(1 2 3) a=2 if [[ "${ary[@]}" =~ "$a" ]];then echo "a in ary" else echo "a not in ary" fi
函数
- 特殊字符的用途
$# 传递到脚本或函数的参数个数 $* 以一个单字符串显示所有向脚本传递的参数 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号 $@ 与 $* 相同,但是使用时加引号,并在引号中返回每个参数 $- 显示 Shell 使用的当前选项,与 set 命令功能相同 $? 显示最后命令的退出状态。一般用来获取上一个返回值
- 简单的实例
demoFun(){ echo "这是一个 shell 函数!" } demoFun #调用方法
- 带
return
的实例funWithReturn(){ echo "输入第一个数字: " read num1 echo "输入第二个数字: " read num2 echo "两个数字分别为 $num1 和 $num2 !" return $(($num1+$num2)) } funWithReturn #函数的调用 echo "两个数字之和为 $? !" #返回值通过 $? 来获得 ############## 输出的结果 ############## ## 输入第一个数字: ## 12 ## 输入第二个数字: ## 34 ## 两个数字分别为 12 和 34 ! ## 两个数字之和为 46 ! ############## END ##############
- 带参数的实例
funWithParam(){ echo "第一个参数为 $1 ." echo "第二个参数为 $2 ." echo "第十个参数为 $10 ." echo "第十个参数为 ${10} ." echo "第十一个参数为 ${11} ." echo "参数总数有 $# 个." echo "作为一个字符串输出所有参数 $* ." } funWithParam 1 2 3 4 5 6 7 8 9 34 73 ############## 输出的结果 ############## ## 第一个参数为 1 . ## 第二个参数为 2 . ## 第十个参数为 10 . ## 第十个参数为 34 . ## 第十一个参数为 73 . ## 参数总数有 11 个 . ## 作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 . ############## END ##############
- 在函数体内部,通过 $n 的形式来获取参数的值。例如,$1 表示第一个参数,$2 表示第二个参数…
- $10 不能获取第十个参数,获取第十个参数需要 ${10}。当 n>=10 时,需要使用 ${n} 来获取参数。