在 bash 脚本中使用 sed 时的引号

在 bash 脚本中使用 sed 时的引号

我正在 Bash 脚本中生成 sed 表达式,但遇到了以下问题。

我想在每次出现 abc 时前面添加一个空格。

此命令按预期工作

echo abc | sed -e "s/abc/ def/"

输出是“明确”“不带引号

而这个命令

Q='-e "s/abc/ def/"'
echo abc | sed $Q

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

在 Bash 脚本之外,一切正常。

我尝试了所有可能的引号、转义字符的方法,但还是没能解决。有人能帮帮我吗?

答案1

使用多个选项,而不是单个选项:

Q=( -e "s/abc/ def/" )
echo abc | sed "${Q[@]}"

相关内容