Linux 即使if条件为true,Else块也始终运行

Linux 即使if条件为true,Else块也始终运行,linux,curl,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" =

我在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;
#/bin/bash
状态=$(curl-Is)http://anyenv.com:9001/de/ |总目(1)
match=“HTTP/1.1 200正常”
echo$状态
回声$match
如果[“$status”=“HTTP/1.1200确定”];然后
echo“系统运行良好,无需担心,保持快乐。”| mail-s“工具网站已启动并运行!”任何_mail@gmail.com
其他的
邮件-s“工具网站已关闭。”任何_mail@gmail.com
在if use==中,而不是单个=


使用==运算符而不是=

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

使用此选项:

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

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

您将看到输出()中有一个回车字符,
match
变量中缺少该字符

你可以把它放在那里

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

如果[[“$statusCheck”==“$matchVar”];伙计们,这里的问题是bash无法选择变量的值…如果我使用下面的语法…它工作正常…如果[[“HTTP/1.1200ok”==“HTTP/1.1200ok”];然后MatchVar=$“HTTP/1.1 200 OK”从末尾删除了CR,字符串匹配正确。谢谢
match=$'HTTP/1.1 200 OK\r'