gpt4 book ai didi

bash - 将 bash 数组扩展为花括号语法

转载 作者:行者123 更新时间:2023-11-29 09:03:10 26 4
gpt4 key购买 nike

获取 bash 数组变量的好方法是什么:

lst=(a b c)

并将其转换为花括号语法,这样它给出的语句等效于:

$ echo foo{a,b,c}
fooa foob fooc

?自然地,我希望用 lst 的扩展替换花括号。在我的具体情况下,不可能(或者更确切地说,非常难看)使用 for 循环。

到目前为止我最接近的是:

$ lst=(a b c); echo foo${lst[@]}
fooa b c

最佳答案

回想一下,如果 ary 是一个数组,那么 ${ary[@]/#/foo} 的扩展就是 ary,每个字段前面都有 foo。同样,${ary[@]/%/foo}foo 附加到每个字段。看:

$ lst=( a b c )
$ echo "${lst[@]/#/foo}"
fooa foob fooc
$ echo "${lst[@]/%/foo}"
afoo bfoo cfoo

你不需要 evalprintf

像这样,您可以安全地构建数组:

$ lst=( a 'field with space' b )
$ foolst=( "${lst[@]/#/foo}" )
$ declare -p foolst
declare -a foolst='([0]="fooa" [1]="foofield with space" [2]="foob")'

关于bash - 将 bash 数组扩展为花括号语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27346410/

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