我想根据它的类型解析json,因为它有时会变化。如果json是一个数组,我需要得到第一个元素,或者如果它不是我只需要那个元素!以下是我尝试使用的更简单的版本。
#!/bin/bash
word='[0,1]'
word=$(echo $word | jq 'if type=="array" then "'$word[0]'" else "'$word'" end')
echo $word
它输出"[0,1][0]"
,因为我预期将传递条件分配给变量,这只是0.因为在下面的情况下它只是打印了#34;是"。
#!/bin/bash
word='[0,1]'
word=$(echo $word | jq 'if type=="array" then "yes" else "no" end')
echo $word
为什么会有差异以及如何实现前者?
答案 0 :(得分:3)
您可以使用.[0]
返回第一个数组项:
echo "$word" | jq 'if type=="array" then .[0] else . end'