【发布时间】:2012-11-04 16:48:42
【问题描述】:
我正在尝试创建一个简单的 Bash 脚本来检查网站是否已关闭,并且由于某种原因“and”运算符不起作用:
#!/usr/bin/env bash
WEBSITE=domain.com
SUBJECT="$WEBSITE DOWN!"
EMAILID="an@email.com"
STATUS=$(curl -sI $WEBSITE | awk '/HTTP\/1.1/ { print $2 }')
STRING=$(curl -s $WEBSITE | grep -o "string_to_search")
VALUE="string_to_search"
if [ $STATUS -ne 200 ] && [[ "$STRING" != "$VALUE" ]]; then
echo "Website: $WEBSITE is down, status code: '$STATUS' - $(date)" | mail -s "$SUBJECT" $EMAILID
fi
“-a”运算符也不起作用:
if [ $STATUS -ne 200 ] -a [[ "$STRING" != "$VALUE" ]]
能否请您告知何时使用:
- 单方括号和双方括号
- 括号
?
【问题讨论】:
-
您能否更准确地说明什么“不起作用”?您是否有特定的错误消息,或者根本没有提供预期的输出?
-
我实际上收到了“预期的一元运算符”,所以看起来引用有帮助
-
-a具有重复性。当与 Bourne shell 风格的test命令(又名[)一起使用时,它的意思是and。当用作 条件表达式 时,它正在测试文件是否存在。是的,这令人困惑,最好避免。
标签: bash if-statement