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

时间:2018-03-12 16:26:07

标签: linux shell curl

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

curl -sL -w "%{http_code}" "http://google.com" -o /dev/null

然而,如果我运行如下,我得到"失败"作为输出:

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

请告诉我这里有什么问题?

2 个答案:

答案 0 :(得分:3)

您没有正确使用命令替换。用这种方式重写:

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

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

if curl -sL --fail http://google.com -o /dev/null; then
    echo "Success"
else
    echo "Fail"
fi

答案 1 :(得分:1)

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

检查http://wiki.bash-hackers.org/syntax/expansion/cmdsubst