繁体   English   中英

如何在Linux Shell脚本中从JSON键值对中获取值

[英]how to get a value from a json key value pair in linux shell scripting

嗨,我正在写一个小的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脚本中的值

如果需要使用JSON,则应获取jq

$ echo '{"status": "14"}' | jq '.status|tonumber'
14

或者,不那么严格:

$ echo '{"status": "14"}' | jq -r '.status'
14

如果您确定curl输出的格式,则非常简单。

echo "$curlout" | tr -cd '[:digit:]'

tr 联机帮助页中,

   -c, -C, --complement
          use the complement of SET1

   -d, --delete
          delete characters in SET1, do not translate

   [:digit:]
          all digits

因此,此命令将除去数字以外的所有字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM