Je veux faire quelque chose comme ça:
if cmd1 && cmd2
echo success
else
echo epic fail
fi
Comment devrais-je le faire?
bash
shell-script
exit-status
michelemarcon
la source
la source
Réponses:
Ceux-ci devraient faire ce dont vous avez besoin:
ou
la source
||
ne regarde pas la sortie de la premièreecho
commande.Just try whoami && whoami && echo success || echo epic fail
et maintenantwhoami && whoareyou && echo success || echo epic fail
. Je n'arrive pas à comprendre ce que vous entendez par "ne regarde pas le résultat de la première commande d'écho"cmd1 && cmd2
Petr Uzel est sur place, mais vous pouvez également jouer avec la magie $ ?.
$? contient le code de sortie de la dernière commande exécutée, et si vous l'utilisez, vous pouvez écrire vos scripts avec une grande flexibilité.
Cette question touche un peu ce sujet. Meilleure pratique pour utiliser $? en bash? .
Ensuite, vous pouvez également réagir à différents codes de sortie et faire différentes choses si vous le souhaitez.
la source
Le pseudo-code de la question ne correspond pas au titre de la question.
Si quelqu'un a réellement besoin de savoir comment exécuter la commande 2 si la commande 1 échoue, voici une explication simple:
cmd1 || cmd2
: Cela fonctionneracmd1
et en cas d'écheccmd2
cmd1 && cmd2
: Cela fonctionneracmd1
, et en cas de succès, cela fonctionneracmd2
cmd1 ; cmd2
: Ceci s'exécuteracmd1
, et ensuitecmd2
, indépendamment de l'échec ou du succès de l'exécutioncmd1
.la source