2017-11-06 6 views
0

echo $(curl -s -u user:pwd "http://site/file.json" | jq -e -r '.data []?| select(.state == "Active")| if 。。後== nullが、その後のelifを「インストール」他==「アクティブ」し、「アクティブ」終わり "を「インストール」)jq 404 jsonファイルの解析エラーを抑制します

は誤りです:

パースエラー:行2に無効な数値リテラル、列0

file.jsonが存在しない場合、404ページが返され、jqが解析エラーをスローします。そのような場合には、文字列 "Installing"を返したいと思います。多くのことを試してみましたが、何も進まないので、助けてください。

+0

を 'curl'は' 404'は異なるエラーを返した場合に何を印刷すべきか? – RomanPerekhrest

+0

他のすべてのエラーに対しても "インストール中"が印刷されることを期待しています。 "Active"は.data []。stateが "Acitve"を返すときにのみ出力されるべきです。 – user1959609

+0

予想される入力json構造を投稿できますか? – RomanPerekhrest

答えて

0

変数に応答を書く:

# -f makes curl return an error in case of HTTP error. 
# Check "man curl" on how reliable this is. 
response="$(curl -f ...)" 
if [ $? -ne 0 ] ; then 
    echo "Installing" 
else 
    jq FILTER <<< "${response}" 
fi