BASH:在列表中使用`/`的目的是什么?

时间:2016-02-25 10:51:18

标签: bash list

定义列表:

arr=(2 3 4)

然后改变它:

arr=${arr[@]/4}

打印:

echo ${arr[@]} => 2 3 3 4

为什么这是结果?这个斜杠的目的是什么?

1 个答案:

答案 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}")