我在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;
答案 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)
在if if = =而不是单个=
中http://www.pyeung.com/pages/unix/linux/bashcomparisonoperators.html
答案 3 :(得分:-1)
使用==运算符而不是=
==检查$ status = Http 200的值是否正常 但是,如果use =它将值Http 200 OK分配给变量$ status,因此如果else语句alwayz评估为true 如果仍然出现错误,请使用下面的if语句 如果[$ status == $ match]