Sto cercando di creare un semplice script Bash per verificare se il sito Web non è attivo e per qualche motivo l'operatore "e" non funziona:
#!/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
Anche l'operatore "-a" non funziona:
if [ $STATUS -ne 200 ] -a [[ "$STRING" != "$VALUE" ]]
Potresti anche avvisare quando usare:
- parentesi quadre singole e doppie
- parentesi
?
-aha duplicità. Se usato con il testcomando stile shell Bourne , aka [, significa and. Se usato come espressione condizionale , sta testando se esiste un file. Sì, è confuso, meglio evitare.