Je veux être en mesure de regrouper les commandes ensemble de sorte que si l'un d'un groupe de commandes échoue, une autre est exécutée, à savoirComment regrouper les commandes pour les opérateurs de contrôle || et &&?
$ ping 1; echo 1 || echo 2
retournera l'équivalent de
$ ping 1; echo 2
avec le résultat
connect: Invalid argument
2
-à-dire les deux premières commandes ping 1
et echo 1
doivent être regroupées de telle sorte que si o aucun d'entre eux échoue, le troisième echo 2
sera exécuté.
choses que j'ai essayé,
$ (ping 1; echo 1) || echo 2
$ ((ping 1; echo 1)) || echo 2
$ [[ ping 1; echo 1)) || echo 2
$ { ping 1; echo 1; } || echo 2
$ eval "ping 1; echo 1" || echo 2
$ function try_ping { ping 1; echo 1; }; try_ping || echo 2
EDIT Je dois encore toutes les commandes dans ce premier groupe à courir, alors &&
ne fonctionnerait pas pour moi.
- Exécuter toutes les commandes du groupe 1
- Si l'une des commandes dans le groupe 1 FAIL (pas quitter l'état zéro)
- Lancez ensuite le deuxième groupe
Par exemple,
function my_ping {
local exit=0
command1
exit=$((exit + $?))
command2
exit=$((exit + $?))
if [[ "$exit" -ne "0" ]]; then
command3
fi
}
Lorsque vous Wr ite 'ping 1', voulez-vous dire que seulement à titre d'exemple? "Argument invalide" provient de ping. – dbalakirev
@dbalakirev Oui, c'est juste un exemple. – ning