分配后评估bash变量

时间:2014-11-02 16:09:37

标签: bash variables if-statement variable-assignment evaluation

我正在编写一个小的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专家来说非常简单,我不是。我将非常感谢您的提示。

0 个答案:

没有答案