如果bash中是否有其他条件,如何写

时间:2018-08-01 03:53:29

标签: bash

对不起,我的问题错了。

这是我的代码。

   if [[ "$http_status" -ne 200 ]]; then
       # curl command to check the response
       http_status= some response

       if [[ "$http_status" -ne 200 ]]; then
           # curl command to check the response
           http_status= some response

           if [[ "$http_status" -ne 200 ]]; then
               # curl command to check the response
               http_status= some response
               echo "Some error. Please try again"
           fi
       fi
   else
      echo "You got the response"
   fi

是否可以对3个if语句仅使用另一个? 说,如果我的第二个条件为真(如果我在第二个条件下得到响应),它将在第二个条件后执行其他部分吗?我可以直接回到其他地方吗?

预先感谢!

1 个答案:

答案 0 :(得分:0)

一种方法是从“错误”消息行跳到“其他”分支之外,但这在bash中会很混乱。

更好的方法是,如果收到正确的响应,则设置一个标志,并使用该标志报告成功或失败。例如:

got_response=Y
http_status= some response
if [[ "$http_status" -ne 200 ]]; then
   # curl command to check the response
   http_status= some response

   if [[ "$http_status" -ne 200 ]]; then
       # curl command to check the response
       http_status= some response

       if [[ "$http_status" -ne 200 ]]; then
           got_response=N
       fi
   fi
fi

if [[ $got_response = "Y" ]]; then
    echo "You got the response"
else
    echo "Some error. Please try again"
fi

还有其他潜在的改进,例如使用“ while”循环重复请求(使更改尝试次数更加容易)。

请注意,我已经将您的“ http_status =某些响应”的一行移到了第一行-您需要在第一个“ if”测试之前进行一次,并且在报告错误时也不希望在代码中出现该行。