如何在shell中建立一个if条件来检查curl是否成功?

Moo*_*ose 2 linux shell curl if-statement

我在 Linux 中运行一个返回 200 的 cURL 命令。

curl -sL -w "%{http_code}" "http://google.com" -o /dev/null
Run Code Online (Sandbox Code Playgroud)

但是,如果我像下面一样运行,我会得到“失败”作为输出:

if [ "curl -sL -w "%{http_code}" "http://google.com" -o /dev/null" == "200" ]; then echo "Success"; else echo "Fail"; fi
Run Code Online (Sandbox Code Playgroud)

请让我知道这里有什么问题?

cod*_*ter 5

您没有正确使用命令替换。改写成这样:

if [ "$(curl -sL -w '%{http_code}' http://google.com -o /dev/null)" = "200" ]; then
    echo "Success"
else
    echo "Fail"
fi
Run Code Online (Sandbox Code Playgroud)

正如查尔斯所建议的,--fail只要您正在寻找成功或失败,您就可以使用选项进一步简化此操作:

if curl -sL --fail http://google.com -o /dev/null; then
    echo "Success"
else
    echo "Fail"
fi
Run Code Online (Sandbox Code Playgroud)

  • 为什么不使用 `curl --fail`,让 `curl` 负责非成功(非 200 系列)结果的非零退出状态? (4认同)