web-dev-qa-db-fra.com

Vérifier si le fichier existe et continuer sinon quitter dans Bash

J'ai un script qui est un script dans une chaîne d'autres qui envoie un e-mail.

Au début du script, je veux vérifier si un fichier existe et continuer uniquement s'il existe, sinon quittez simplement.

Voici le début de mon script:

if [ ! -f /scripts/alert ];
then
    echo "File not found!" && exit 0
else
        continue
fi

Cependant, je reçois toujours un message disant:

line 10: continue: only meaningful in a `for', `while', or `until' loop

Des pointeurs?

18
user1190083

Changez-le en ceci:

{
if [ ! -f /scripts/alert ]; then
    echo "File not found!"
    exit 0
fi
}

Un conditionnel n'est pas une boucle, et il n'y a aucun endroit où vous devez sauter. L'exécution continue simplement après le conditionnel de toute façon.

(J'ai également supprimé l'inutile &&. Non pas que cela se produise, mais juste au cas où le echo échoue, il n'y a aucune raison de ne pas quitter.)

34
Kerrek SB

Votre problème est avec la ligne continue qui est normalement utilisée pour passer à l'itération suivante d'une boucle for ou while.

Par conséquent, la simple suppression de la partie else de votre script devrait lui permettre de fonctionner.

2
Pluckerpluck

Oui. Jeter le else continue. C'est totalement inutile.

1
Kevin