C'è qualcosa di simile a pipefail per più comandi, come un'istruzione 'try' ma all'interno di bash. Vorrei fare qualcosa del genere:
echo "trying stuff"
try {
command1
command2
command3
}
E in qualsiasi momento, se un comando non riesce, abbandonare e fare eco all'errore di quel comando. Non voglio fare qualcosa del tipo:
command1
if [ $? -ne 0 ]; then
echo "command1 borked it"
fi
command2
if [ $? -ne 0 ]; then
echo "command2 borked it"
fi
E così via ... o qualcosa del genere:
pipefail -o
command1 "arg1" "arg2" | command2 "arg1" "arg2" | command3
Perché gli argomenti di ciascun comando in cui credo (correggimi se sbaglio) interferiranno l'uno con l'altro. Questi due metodi mi sembrano orribilmente prolissi e cattivi per me, quindi sono qui attraente per un metodo più efficiente.
set -e
è un'idea orribile . Vedi gli esercizi in BashFAQ # 105 che discutono solo alcuni dei casi limite inaspettati che introduce e / o il confronto che mostra incompatibilità tra le diverse implementazioni di shell (e versioni di shell) su in-ulm.de/~mascheck/various/set -e .
set -euo pipefail
.