对不起,我的问题错了。
这是我的代码。
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语句仅使用另一个? 说,如果我的第二个条件为真(如果我在第二个条件下得到响应),它将在第二个条件后执行其他部分吗?我可以直接回到其他地方吗?
预先感谢!
答案 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”测试之前进行一次,并且在报告错误时也不希望在代码中出现该行。