使用bash编写JSON文件

我想用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文件的事实。 如果该文件不存在,请检查您的用户是否具有该目录的写入权限。 如果存在,请检查您的用户是否具有该文件的写入权限。