编写shell脚本的时候,打算将脚本的输出定义为 json 格式,好方便扩展功能时其他脚本能方便读取使用。主要就是 for 循环将处理好后的内容定义为 json 对象,然后追加到 json 数组里面,最后直接输出完整数组。
验证jq命令将值添加到数组
[root@imzcy ~]# json_data=[]
[root@imzcy ~]# json_data=$( echo '[{"name":"zhangsan","age":18}]' |jq '. += '"$json_data"' ')
[root@imzcy ~]# echo $json_data
[ { "name": "zhangsan", "age": 18 } ]
[root@imzcy ~]#[root@imzcy ~]# json_data=$( echo '[{"name":"lisi","age":19}]' |jq '. += '"$json_data"' ')
[root@imzcy ~]# echo $json_data
[ { "name": "lisi", "age": 19 }, { "name": "zhangsan", "age": 18 } ]
[root@imzcy ~]#在 shell 脚本中验证
[root@imzcy ~]# cat t2.sh
#!/bin/bash
user_list="zhangsan 18
lisi 19"
output_info=[]
while read line; do
eval $(echo "$line" |awk '{printf("name=%s; age=%s",$1,$2)}' )
json_data='
{
"nowTime":"'$(date '+%Y-%m-%d %H:%M:%S')'",
"name":"'${name}'",
"age": '${age}'
}'
#echo $json_data
output_info=$( echo '[ '${json_data}' ]' |jq '. += '"$output_info"' ' )
done <<< $(echo $user_list)
echo $output_info
[root@imzcy ~]#[root@imzcy ~]# sh t2.sh
[ { "nowTime": "2024-02-05 23:23:17", "name": "zhangsan", "age": 18 } ]
[root@imzcy ~]#
[root@imzcy ~]# sh t2.sh |jq .
[
{
"nowTime": "2024-02-05 23:23:51",
"name": "zhangsan",
"age": 18
}
]
[root@imzcy ~]#
本文采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。
如果您的问题未解决,欢迎微信扫描右侧二维码与我联系。