即使if条件为真,其他块也始终运行

时间:2015-12-14 09:13:40

标签: linux curl

我在linux中编写了一个脚本,我通过curl命令写了一个URL,如果响应是“HTTP / 1.1 200 OK”,那么什么也不做,但如果响应不是200 OK,我需要发送一封邮件。请找到下面的脚本,让我知道它为什么不能正常工作。

#!/bin/bash
status=$(curl -Is http://anyenv.com:9001/de/ | head -n 1)

match="HTTP/1.1 200 OK"

echo $status

echo $match

if [ "$status" = "HTTP/1.1 200 OK" ]; then
        echo "System is in good health, no need to worry, stay happy." | mail -s "Tool Website is up and running!" any_mail@gmail.com

else

 mail -s "Tool website is down." any_mail@gmail.com < /home/myuser/mailbody.txt
fi;

4 个答案:

答案 0 :(得分:1)

使用此:

if [[ "$status" =~ "200" ]]; then
......

答案 1 :(得分:1)

好吧,else块正在运行,因为条件不正确。

运行

curl -Is http://anyenv.com:9001/de/ | head -n 1 | od -c

你会看到输出(because the protocol specifies it)中有一个回车字符,match变量中缺少该字符。

你可以把它放在那里

match=$'HTTP/1.1 200 OK\r'

答案 2 :(得分:-1)

答案 3 :(得分:-1)

使用==运算符而不是=

==检查$ status = Http 200的值是否正常 但是,如果use =它将值Http 200 OK分配给变量$ status,因此如果else语句alwayz评估为true  如果仍然出现错误,请使用下面的if语句 如果[$ status == $ match]