shell-数组访问
下标访问
与其他语言(java,c++)一样,shell访问数组的具体元素是通过下标来指定的,格式为:array[n]
array表示数组名,n为下标(n从0开始,所以访问元素n,下标为n-1)
#!/bin/bash array=(1 3 4 5 6) echo "访问第四个元素 ${array[3]}" echo "访问第二个元素 ${array[1]}"
输出结果为:
统计数组长度
使用系统变量$#来统计长度,语法为:${#array[@]}
或${#array[*]}
$*表示将结果以“参数1 参数2 ....”的形式将结果以一个字符串的形式返回。
表示将结果以“参数1” “参数2” “参数3” ....“参数n”的形式将结果逐个返回每个参数。实际差别不大
例如:
#!/bin/bash array=(1 2 3 4 5 6 7 8 9 10) echo ${#array[@]} echo ${#array[*]}
输出结果为:
循环遍历数组
for循环(类C风格)来遍历数组
#!/bin/bash array=(Mon Tue Wed Thu Fri Sat Sun) j="${#array[*]}" for ((i=0;i<$j;i++)) do echo "${array[$i]}" done
输出结果为:
切片获取部分数组元素
所谓切片就是截取部分元素或某个元素的部分内容,其语法为:${array[@]:起始位置:终止位置:}或${array[*]:起始位置:终止位置}
实例:
#!/bin/bash program=(c c++ c# java python PHP perl go .net js shell) echo "第三到第六的语言为:${program[*]:2:5}" echo "第七到第十一的语言为:${program[@]:6:10}"
输出结果为:
替换数组元素
对数组元素进行替换,语法为:${array[@]/old/new}
直接在切片的代码里面加吧
#!/bin/bash program=(c c++ c# java python PHP perl go .net js shell) echo "替换Java这个家伙 ${program[@]/java/VisualBasic}" a=${program[@]/PHP/java} b=(${program[@]/shell/Ruby}) #不加园括号就会变成字符串,加了得到的还是数组 echo echo $a echo echo ${b[@]}
输出结果为: