【发布时间】:2015-04-10 13:47:19
【问题描述】:
我有一个使用 jq 解析 json 字符串 MESSAGE 的脚本(从另一个应用程序读取)。同时,json 发生了变化,一个字段被拆分为 2 个字段:file_path 现在拆分为 folder 和 file。该脚本正在读取file_path,现在folder 可能不存在,因此为了创建文件的路径,我必须验证该字段是否存在。我在互联网上搜索了一段时间,并设法做到:
echo $(echo $MESSAGE | jq .folder -r)$'/'$(echo $MESSAGE | jq .file -r)
if [ $MESSAGE | jq 'has(".folder")' -r ]
then
echo $(echo $MESSAGE | jq .folder -r)$'/'$(echo $MESSAGE | jq .file -r)
else
echo $(echo $MESSAGE | jq .file -r)
fi
在哪里MESSAGE='{"folder":"FLDR","file":"fl"}' 或MESSAGE='{"file":"fl"}'
如果文件夹字段不存在,第一行打印FLDR/fl 或null/fl。所以我想创建一个 if 来验证文件夹字段是否存在,但似乎我做错了,无法找出问题所在。输出是
bash: [: missing `]'
jq: ]: No such file or directory
null/fl
【问题讨论】: