ฉันกำลังพยายามสร้างสคริปต์ Bash แบบง่าย ๆ เพื่อตรวจสอบว่าเว็บไซต์ดังกล่าวขัดข้องและด้วยเหตุผลบางอย่าง "และ" โอเปอเรเตอร์ไม่ทำงาน:
#!/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
มีความซ้ำซ้อน เมื่อนำมาใช้กับรูปแบบบอร์นเปลือกtest
คำสั่งอาคาที่มันหมายถึง[
and
เมื่อใช้เป็นนิพจน์เงื่อนไขก็เป็นการทดสอบเพื่อดูว่ามีไฟล์อยู่หรือไม่ ใช่มันสับสนหลีกเลี่ยงที่ดีที่สุด