检查字符串是否在命令答案中

时间:2014-11-03 20:16:00

标签: linux bash shell unix raspberry-pi

我正在努力解决linux bash中的问题 我想要一个脚本来执行命令

curl -s --head http://myurl/ | head -n 1

如果命令的结果包含200,则执行另一个命令。 否则它会回应一些东西。 我现在拥有的:

CURLCHECK=curl -s --head http://myurl | head -n 1
            if [[ $($CURLCHECK) =~ "200" ]]
            then
            echo "good"
            else
            echo "bad"
            fi

脚本打印:

HTTP/1.1 200 OK
bad

我尝试了很多方法,但似乎没有一种方法可行。 有人能帮助我吗?

4 个答案:

答案 0 :(得分:1)

我会做这样的事情:

if curl -s --head http://myurl | head -n 1 | grep "200" >/dev/null 2>&1; then
    echo good
else
    echo bad
fi

答案 1 :(得分:0)

您可以将此curl命令与-w "%{http_code}"一起使用,以获取http状态代码:

[[ $(curl -s -w "%{http_code}" -A "Chrome" -L "http://myurl/" -o /dev/null) == 200 ]] &&
      echo "good" || echo "bad"

答案 2 :(得分:0)

您需要实际捕获curl命令的输出:

CURLCHECK=$(curl -s --head http://myurl | head -n 1)

我很惊讶你没有找到" -s:命令未找到"错误

答案 3 :(得分:0)

使用wget

 if wget -O /dev/null your_url 2>&1 | grep -F HTTP >/dev/null 2>&1 ;then echo good;else echo bad; fi