gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:27:42 25 4
gpt4 key购买 nike

定义列表:

arr=(2 3 4)

然后像那样改变它:

arr=${arr[@]/4}

打印它:

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

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

最佳答案

${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}")

关于BASH:在列表中使用 `/` 的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35625188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com