在sudo封装的sed命令上使用引号已经使用引号

时间:2015-06-23 13:58:34

标签: json linux shell sed sudo

我有一个shell脚本,我想在JSON文件中更改以下文本:

"foo-bar": true

到此:

"foo-bar": false

我想使用sed命令执行此操作。但是,JSON脚本驻留在我的/etc目录中。因此,我必须将整个命令封装在sudo sh -c命令中。

这是我的第一次尝试:

sudo sh -c "sed -e 's/"foo-bar": true/"foo-bar": false/' /etc/sample.json > /etc/sample2.json"

我认为:导致了问题所以我逃脱了它们,但这并没有帮助:

sudo sh -c "sed -e 's/"foo-bar"\: true/"foo-bar"\: false/' /etc/sample.json > /etc/sample2.json"

仍然没有工作。所以,我尝试了有人在Stackoverflow上的类似帖子上建议的双引号:

sudo sh -c "sed -e 's/""foo-bar""\: true/""foo-bar""\: false/' /etc/sample.json > /etc/sample2.json"

但无济于事。

现在,我真的很难过。因为它是一个封装的sudo命令,我需要围绕整个命令的额外引号,我相信这是导致问题的原因。但是我怎么能绕过它?

1 个答案:

答案 0 :(得分:0)

尝试这样做:

AggregateException

换句话说,在本地构建命令然后让sh(1)从stdin中获取命令。