shell数组操作

数组定义

#数值数组
arr_number=(1 2 3 4 5);
#字符串数组
arr_string=("abc" "edf" "ghi");
arr_string=('abc' 'edf' 'ghi');
arr_string=(abc edf ghi);
#返回值
arr_return=$(ls /)

数组操作

#取得数组的长度
arr_length=${#arr_number[*]}
arr_length=${#arr_number[@]}

#取得数组的有效索引值:${!数组名[@或*]}
echo ${!arr_number[@]}      # 0 1 2 3 4

#元素访问
#下标访问
echo ${arr_number[0]}       # 1
echo ${arr_string[1]}       #edf
#访问全部
echo ${arr_number[*]}       # 1 2 3 4 5
echo ${arr_number[@]}       # 1 2 3 4 5

#元素修改
arr_number[1]=98            #注意此处赋值语句没有$
echo ${arr_number[*]}       # 1 98 3 4 5

#元素添加
arr_number[9]=98                #索引号超出数组长度即可
echo ${arr_number[*]}           # 1 2 3 4 5 98
array=("${arr_number[@]}" 98)   #此方法只能赋值给新变量
echo ${array}                   # 1 2 3 4 5 98

#元素删除
unset arr_number[1]        #删除下标为1(第二个)元素
unset arr_number           #删除整个数组

#分片访问:${数组名[@或*]:开始下标:长度}
echo ${arr_number[@]:1:4}       # 2 3 4 5

#模式替换:${数组名[@或*]/模式/新值}
echo ${arr_number[@]/2/98}      # 1 98 3 4 5
echo ${arr_string[@]/e*/98}     # abc 98 ghi

#遍历
for v in ${arr_number[@]}; do
 echo $v;
done

#连接两个数组(注意双引号的使用避免字符串中存在空格引起的问题)
array=("${arr_number[@]}" "${arr_string[@]}")
echo ${array[@]}               # 1 2 3 4 5 abc edf ghi

#复制一个数组(原理同上)
array=("${arr_number[@]}")

 

你可能感兴趣的:(Linux,Shell)