我想用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
Run Code Online (Sandbox Code Playgroud)
问题 : -bash: process.json: Permission denied
一般来说,不要这样做.使用已经知道如何正确引用值的工具,例如jq:
jq -n --arg appname "$appname" '{apps: [ {name: $appname, script: "./cms/bin/www", watch: false}]}` > process.json
Run Code Online (Sandbox Code Playgroud)
也就是说,您的直接问题是sudo仅应用命令,而不是重定向.一种解决方法是使用tee写入文件.
echo '{...}' | sudo tee process.json > /dev/null
Run Code Online (Sandbox Code Playgroud)
要输出文本,请使用echo而不是cat(从文件或流中输出数据).
除此之外,如果您希望它们出现在结果中,您还必须转义文本中的双引号.
echo -e "Name of your app?\n"
read appname
echo "{apps:[{name:\"${appname}\",script:\"./cms/bin/www\",watch:false}]}" > process.json
Run Code Online (Sandbox Code Playgroud)
如果你需要处理的不仅仅是一个简单的行,我第二个@chepner建议使用JSON工具,如jq.
你-bash: process.json: Permission denied来自于你无法写入process.json文件的事实.如果该文件不存在,请检查您的用户是否具有该目录的写入权限.如果存在,请检查您的用户是否具有该文件的写入权限.
| 归档时间: |
|
| 查看次数: |
27646 次 |
| 最近记录: |