带引号的变量作为 sed 命令会产生错误

带引号的变量作为 sed 命令会产生错误

我有这个脚本:

num='[0-9]'
sedcmd='-e "s/${num}/as df/g"'
echo 123 | sed -r $sedcmd

最后一行产生这样的结果:

sed:-e 表达式 #1,字符 1:未知命令:`"'

我错过了什么?

答案1

不要使用变量来存储 shell 命令,而使用数组。看BashFAQ-50 我试图将命令放入变量中,但复杂的情况总是失败。

您只需使用如下所示的数组

num='[0-9]'
argArray=('-e' "s/${num}/as df/g")

并对数组扩展加双引号,以免单词被分词器分割并调用为

echo 123 | sed -r "${argArray[@]}"

相关内容