定义列表:
arr=(2 3 4)
然后改变它:
arr=${arr[@]/4}
打印:
echo ${arr[@]}
=> 2 3 3 4
为什么这是结果?这个斜杠的目的是什么?
答案 0 :(得分:3)
${arr[@]/4}
将从原始数组中删除值为4
的条目。
同样${arr[@]/3}
将删除3
<强>示例:强>
arr=(2 3 4)
echo ${arr[@]/4}
2 3
echo ${arr[@]/3}
2 4
echo ${arr[@]/2}
3 4
echo ${arr[@]/5}
2 3 4
对OP问题的解释:
arr=${arr[@]/4}
相当于:
arr[0]=${arr[@]/4}
将2 3
分配给数组中的第一个元素,从而实现:
2 3 3 4
declare -p
会说清楚:
declare -p arr
declare -a arr='([0]="2 3" [1]="3" [2]="4")'
此阵列的第一个位置不是2 3
。
正确方式是:
arr=("${arr[@]/4}")