shell – sed命令中的${arr [@]}

#!/bin/sh

arr=(
    a
    b
    c
)
sed "s/abc/${arr[@]}/" file

sh -x this_script.sh显示错误的结果:

+ arr=(a b c)
+ sed s/abc/a b c/ file
sed: -e expression #1, char 5: unterminated `s' command

它应该是:

+ sed 's/abc/a b c/' file

这个脚本中已经有双引号,为什么需要声明一个变量才能使它工作:

 x=${arr[@]}
 sed "s/abc/$x/" file

最佳答案 您可以使用${arr [*]}代替${arr [@]}将其视为单个字符串:

sed "s/abc/${arr[*]}/" <<< "abc"

a b c
点赞