簡體   English   中英

JSON響應的Bash腳本條件

[英]Bash script condition for json response

如果出現錯誤響應,此腳本應提醒我。

問題:即使成功執行,我仍會收到電子郵件。

Bash腳本

#!/bin/bash

DATA=$(wget --timeout 5 -O - -q -t 1 http://this.url/?parm=1\&par=2)
IFS=\" read __ KEY __ MESSAGE __ <<< "$DATA"
if [[ $KEY == Success ]]; then
    echo something
else
    send email on failure
fi

回應

Failure:  {"ErrorCode":"11","ErrorMessage":"random message as per error code"}
Sucess:   {"ErrorCode":"000","ErrorMessage":"Success"}

終於成功了-

 #!/bin/bash
    DATA=$(wget --timeout 5 -O - -q -t 1 http://this.url/?parm=1\&par=2)
    MESSAGE=$(jq '.ErrorMessage' <<< "$DATA")
if [[ "$MESSAGE" == '"Success"' ]] ;  then
echo something
else
send email
fi

解決您的問題的合適工具是jq

#!/bin/bash
DATA=$(wget --timeout 5 -O - -q -t 1 http://this.url/?parm=1\&par=2)
KEY=$(jq -r '.ErrorCode' <<< "$DATA")
MESSAGE=$(jq -r '.ErrorMessage' <<< "$DATA")
if [[ "$KEY" = "000" ]]
then 
    echo success
else
    echo fail
fi

注意: jq-r標志刪除雙引號

#!/bin/bash
DATA=$(wget --timeout 5 -O - -q -t 1 http://this.url/?parm=1\&par=2)
KEY=$(echo "$DATA" | grep -oP '"ErrorCode":"\K(\d+)"')
MESSAGE=$(echo "$DATA" | grep -oP '"ErrorMessage":"\K(.+?)(?=")')
((KEY == 0)) && echo success || echo "$MESSAGE"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM