![在变量中执行命令不适用于 sed](https://linux22.com/image/105071/%E5%9C%A8%E5%8F%98%E9%87%8F%E4%B8%AD%E6%89%A7%E8%A1%8C%E5%91%BD%E4%BB%A4%E4%B8%8D%E9%80%82%E7%94%A8%E4%BA%8E%20sed.png)
这对我有用:
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