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格式的内容的主要内容,如果未能解决你的问题,请参考以下文章

在 Unix shell 脚本中以可读的 JSON 格式显示 curl 输出

json内容,该如何循环输出(JS)

如何在mongo shell 中输出格式化时间?

shell编程之shell格式化输出

格式化json内容输出[重复]

python,awk,shell格式化输出内容全解