作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个构建工具,它正在创建一个注入(inject) json
格式字符串的 versions.json 文件。
最初我想通过回声注入(inject) json,如下所示。
json = {"commit_id": "b8f2b8b", "environment": "test", "tags_at_commit": "sometags", "project": "someproject", "current_date": "09/10/2014", "version": "someversion"}
echo -e json > versions.jso
但是 echo
似乎逃脱了所有引号,所以我的文件最终会变成这样:
{commit_id: b8f2b8b, environment: test, tags_at_commit: somereleasetags, project: someproject, current_date: 09/10/2014, version: someproject}
不幸的是,这不是有效的 JSON。
最佳答案
要保留双引号,您需要用单引号将变量括起来,如下所示:
json='{"commit_id": "b8f2b8b", "environment": "test", "tags_at_commit": "sometags", "project": "someproject", "current_date": "09/10/2014", "version": "someversion"}'
echo "$json" > versions.json
请注意,此方法不会正确显示变量,而是打印文字 $variable
.
如果你需要打印变量,使用cat << EOF
构造,它利用内置于 Bash 中的 Here Document 重定向。参见 man bash
并搜索“此处文档”以获取更多信息。
例子:
commit="b8f2b8b"
environment="test"
...etc
cat << EOF > /versions.json
{"commit_id": "$commit", "environment": "$environment", "tags_at_commit": "$tags", "project": "$project", "current_date": "$date", "version": "$version"}
EOF
如果您正在寻找与 bash 配合得很好的更高级的 json 处理工具,我推荐 jq
关于json - 通过命令行将 json 回显到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26276348/
我是一名优秀的程序员,十分优秀!