對於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, ""雙引號是必須的。 所以大括號里面的""雙引號必須用反斜杠\標注出來。