我正在尝试创建一个简单的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
命令aka一起使用时[
,它表示and
。当用作条件表达式时,它正在测试以查看文件是否存在。是的,这令人困惑,最好避免。