J'essaie de créer un simple script Bash pour vérifier si le site Web est en panne et pour une raison quelconque, l'opérateur "et" ne fonctionne pas:
#!/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
L'opérateur "-a" ne fonctionne pas non plus:
if [ $STATUS -ne 200 ] -a [[ "$STRING" != "$VALUE" ]]
Pourriez-vous également indiquer quand utiliser:
- crochets simples et doubles
- parenthèse
?
-a
a la duplicité. Lorsqu'il est utilisé avec la test
commande de style Bourne shell , aka [
, cela signifie and
. Lorsqu'il est utilisé comme expression conditionnelle, il teste pour voir si un fichier existe. Oui, c'est déroutant, mieux vaut éviter.