2016-09-08 136 views
4
#!/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 

回答

2

您可以使用${arr[*]}而不是${arr[@]}将其视为单个字符串:

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

a b c