我想用BASH编写一个JSON文件,但是看起来效果不好。
我的代码:
sudo echo -e "Name of your app?\n" sudo read appname sudo cat "{apps:[{name:\"${appname}\",script:\"./cms/bin/www\",watch:false}]}" > process.json
问题: -bash: process.json: Permission denied
一般来说,不要这样做。 使用一个已经知道如何正确引用值的工具,如jq
:
jq -n --arg appname "$appname" '{apps: [ {name: $appname, script: "./cms/bin/www", watch: false}]}` > process.json
这就是说,你的直接问题是, sudo
只应用命令,而不是重定向。 一种解决方法是使用tee
来写入文件。
echo '{...}' | sudo tee process.json > /dev/null
要输出文本,请使用echo
而不是cat
(从文件或流输出数据)。
除此之外,如果您希望它们出现在结果中,您还必须在文本内部跳过双引号。
echo -e "Name of your app?\n" read appname echo "{apps:[{name:\"${appname}\",script:\"./cms/bin/www\",watch:false}]}" > process.json
如果你需要处理的不仅仅是一个简单的线,我第二@ chepner建议使用JSON工具,如jq
。
你的-bash: process.json: Permission denied
来自于你不能写入到process.json
文件的事实。 如果该文件不存在,请检查您的用户是否具有该目录的写入权限。 如果存在,请检查您的用户是否具有该文件的写入权限。