jsonレスポンスのエンドポイントをカールし、ファイルにレスポンスを書き込みます。 これまでのスクリプトは次のとおりです。Bash:文字列が存在する場合、jsonレスポンスをチェックしてファイルに書き込みします。
1)。ファイルが存在しない場合はカールし、 2)。それ以外の場合は変数を設定します
#!/bin/bash
instance="server1"
curl=$(curl -sk https://my-app-api.com | python -m json.tool)
json_response_file="/tmp/file"
if [ ! -f ${json_response_file} ] ; then
${curl} > ${json_response_file}
instance_info=$(cat ${json_response_file})
else
instance_info=$(cat ${json_response_file})
fi
問題は、ファイルが応答が不良であるか、空である可能性があります。 おそらくbashを使うまで、私はしたいです
(1)。 curlレスポンスのフィールドに$ instanceが含まれていることを(JQを使用して)チェックしてから、そのファイルだけを書き込みます。
(2)。レスポンスに$ instance
(3)が含まれるまで、curl XX回数を再試行してください。応答に$ instance
(4)が含まれていれば、ファイルを書きます。上記が正しく行われたときに変数instance_info = $(cat $ {json_response_file})を設定してください。私はこのように始まっ
は...その後、捕まってしまった...
until [[ $(/usr/bin/jq --raw-output '.server' <<< ${curl}) = $instance ]]
do
は動作しませんあなたの条件を実行し、またはこれは問題ですロジックの実装方法を理解していますか? –
'' jq'を持っているときになぜ '' python -m json.tool'が必要ですか? –
その論理を解明しようとする問題。私は本当にpython -m json.toolは必要ありません。 – Narrabit10