我有一个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命令,我需要围绕整个命令的额外引号,我相信这是导致问题的原因。但是我怎么能绕过它?
答案 0 :(得分:0)
尝试这样做:
AggregateException
换句话说,在本地构建命令然后让sh(1)从stdin中获取命令。