我正在编写一个小的bash脚本,需要检查JSON中的Web服务的输出。如果特定JSON字段的值为“success”,则脚本应该只回显0.该脚本用作具有不同Web服务的部署挂钩,因此我无法选择返回的内容。
我已经达到了可以轻松解析JSON(使用jq)并回显我感兴趣的字段值的程度。
result=$(curl https://www.cloudflare.com/api_json.html \
-d 'a=zone_file_purge' \
-d 'tkn=###########################' \
-d 'email=#########################' \
-d 'z=#############################' \
-d 'url=###########################' \
| jq '.result'); echo $result;
确实会回应“成功”。换句话说,变量$ result的值是“success”。
但如果我这样做:
result=$(curl https://www.cloudflare.com/api_json.html \
-d 'a=zone_file_purge' \
-d 'tkn=###########################' \
-d 'email=#########################' \
-d 'z=#############################' \
-d 'url=###########################' \
| jq '.result'); if [ "$result" == "success" ]; then echo 0; else echo $result; fi
脚本仍然回响:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
310 148 0 148 0 162 116 127 --:--:-- 0:00:01 --:--:-- 0
"success"
我也试过
if [ "$result" = "success" ];
和
if [ $result == "success" ];
和
if [ $result = "success" ];
但结果总是一样的。这对我来说完全没有意义,因为“成功”应该与“成功”相同,因此应该回显0.
我知道这对于bash专家来说非常简单,我不是。我将非常感谢您的提示。