Tôi đang cố gắng tạo một tập lệnh Bash đơn giản để kiểm tra xem trang web có bị hỏng hay không và vì lý do nào đó, toán tử "và" không hoạt động:
#!/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
Toán tử "-a" cũng không hoạt động:
if [ $STATUS -ne 200 ] -a [[ "$STRING" != "$VALUE" ]]
Bạn cũng có thể vui lòng tư vấn khi sử dụng:
- dấu ngoặc đơn và đôi
- dấu ngoặc đơn
?
-a
có sự trùng lặp. Khi được sử dụng với test
lệnh kiểu Bourne shell , aka [
, nó có nghĩa and
. Khi được sử dụng như một biểu thức có điều kiện thì nó đang kiểm tra xem một tệp có tồn tại không. Có nó là khó hiểu, tốt nhất nên tránh.