shell 输出json格式的内容
Posted 30岁再次出发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell 输出json格式的内容相关的知识,希望对你有一定的参考价值。
对于shell脚本的输出,如果要输出json格式的内容,我们可以借助python -m json.tool命令
比如
echo ‘{"name":"zhangsan", "age":"18"}‘ | python -m json.tool
首先,大括号外面必须有单引号‘‘,因为在shell里面大括号{}不用单引号引起来就相当于一个匿名函数,
不加单引号就等价去echo 输出 {"name":"zhangsan", "age":"18"}这个匿名函数的返回值。
其次,大括号里面的字符串,必须用"" 双引号,不能用‘‘单引号,否则会报错。
当大括号中带有变量时该怎么输出呢?
echo 后面的内容已经被‘‘单引号引起来了,shell自身已经不可能再去解析变量了,那么只能我们职级手动去解析,这时候就想到eval命令,eval的一个功能就是将自己的参数变量进行展开,具体关于eval的命令,自行网上搜索吧,下面直接给出答案。
echo $(eval echo ‘{"name":"zhangsan", "age":""$age""}‘) | python -m json.tool
注意,第一个echo不是必须的,所以也可以是eval echo ‘{"name":"zhangsan", "age":""$age""}‘ | python -m json.tool。但是大括号里面的""双引号必须用反斜杠标注出来,因为eval在进行变量展开的时候,会将大括号中的""解析掉,当不加反斜杠时,输出就变成了
而对于python -m json.tool, ""双引号是必须的。 所以大括号里面的""双引号必须用反斜杠标注出来。
以上是关于shell 输出json格式的内容的主要内容,如果未能解决你的问题,请参考以下文章