Essayez :
my_command || { echo 'my_command failed' ; exit 1; }
Quatre changements :
- Changement
&&
à ||
- Utilisez
{ }
à la place de ( )
- Présentez
;
après exit
et
- espaces après
{
et avant }
Puisque vous souhaitez imprimer le message et sortir uniquement lorsque la commande échoue (sortie avec une valeur non nulle), vous avez besoin d'un fichier de type ||
pas un &&
.
cmd1 && cmd2
fonctionnera cmd2
quand cmd1
réussit(valeur de sortie 0
). Où comme
cmd1 || cmd2
fonctionnera cmd2
quand cmd1
échoue (valeur de sortie non nulle).
Utilisation de ( )
fait en sorte que la commande qu'ils contiennent soit exécutée dans un sous-coquille et appeler un exit
à partir de là, vous quittez le sous-shell et non votre shell d'origine, l'exécution continue donc dans votre shell d'origine.
Pour surmonter cette difficulté, utilisez { }
Les deux derniers changements sont requis par bash.
6 votes
Le guillemet non fermé était-il censé constituer une erreur de syntaxe entraînant un échec ou une sortie ? Dans le cas contraire, vous devriez fermer le guillemet dans votre exemple.