Linux 即使if条件为true,Else块也始终运行
我在linux中编写一个脚本,通过curl命令点击一个URL,如果响应为“HTTP/1.1 200 OK”,则什么也不做,但如果响应不是200 OK,则我需要发送一封邮件。请找到下面的脚本,让我知道为什么它不能正常工作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" =
#!/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'