在变量中执行命令不适用于 sed

在变量中执行命令不适用于 sed

这对我有用:

CMD="ls -la"
$CMD

虽然这总是失败:

CMD="sed -e 's|abc|abc|g' file"
$CMD

出现错误消息:

sed: -e expression #1, char 1: unknown command: `''

答案1

这是因为当您在命令行上输入命令时,shell 会对其运行“扩展”。最后一步是“引用删除”,但它仅删除不是任何扩展结果的引号。 (看扩展man bash)这里,引号是变量扩展的一部分,因此它们不会被删除。

您可以输入不带引号的替换以使其起作用:

cmd='sed -e s|abc|abc|g file'
$cmd

相关内容