嗨,我正在写一个小的shell脚本。在那里我使用curl命令来调用api。返回的是扫描状态。
{"status":"14"}
我想获得此状态并检查它是否小于100;这就是我到目前为止所做的事情
a=0
while [ $a -lt 100 ]
do
curlout=$(curl "http://localhost:9090/JSON/spider/view/status/?zapapiformat=JSON&scanId=0");
echo "$curlout";
a=`expr $a + 1`
done
我想要做的是将该状态分配给$ a;如何读取这个json以获取shell脚本中的值
答案 0 :(得分:3)
如果您需要使用JSON,则应获取jq
:
$ echo '{"status": "14"}' | jq '.status|tonumber'
14
或者,不那么严格:
$ echo '{"status": "14"}' | jq -r '.status'
14
答案 1 :(得分:0)
如果您确定卷曲输出的格式,那么它非常简单。
echo "$curlout" | tr -cd '[:digit:]'
来自tr
的{{3}},
-c, -C, --complement
use the complement of SET1
-d, --delete
delete characters in SET1, do not translate
[:digit:]
all digits
因此该命令会删除除数字以外的所有字符。