Existe-t-il quelque chose de similaire à pipefail pour plusieurs commandes, comme une instruction 'try' mais dans bash. Je voudrais faire quelque chose comme ça:
echo "trying stuff"
try {
command1
command2
command3
}
Et à tout moment, si une commande échoue, abandonnez et répercutez l'erreur de cette commande. Je ne veux pas avoir à faire quelque chose comme:
command1
if [ $? -ne 0 ]; then
echo "command1 borked it"
fi
command2
if [ $? -ne 0 ]; then
echo "command2 borked it"
fi
Et ainsi de suite ... ou quelque chose comme:
pipefail -o
command1 "arg1" "arg2" | command2 "arg1" "arg2" | command3
Parce que les arguments de chaque commande je crois (corrigez-moi si je me trompe) vont interférer les uns avec les autres. Ces deux méthodes me semblent horriblement longues et désagréables, je suis donc ici pour une méthode plus efficace.
set -e
est une horrible idée. Voir les exercices dans BashFAQ # 105 traitant de quelques-uns des cas marginaux inattendus qu'il introduit, et / ou la comparaison montrant les incompatibilités entre les implémentations de différents shells (et versions de shell) sur in-ulm.de/~mascheck/various/set -e .
set -euo pipefail
.