Estoy tratando de crear una secuencia de comandos Bash simple para verificar si el sitio web no funciona y, por alguna razón, el operador "y" no funciona:
#!/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
El operador "-a" tampoco funciona:
if [ $STATUS -ne 200 ] -a [[ "$STRING" != "$VALUE" ]]
¿Podría también aconsejar cuándo usar:
- corchetes simples y dobles
- paréntesis
?
-a
Tiene duplicidad. Cuando se usa con el test
comando de estilo de shell Bourne , también conocido como [
, significa and
. Cuando se usa como una expresión condicional , se está probando para ver si existe un archivo. Sí, es confuso, es mejor evitarlo.