Existe algo semelhante ao pipefail para vários comandos, como uma instrução 'try', mas dentro do bash. Eu gostaria de fazer algo assim:
echo "trying stuff"
try {
command1
command2
command3
}
E a qualquer momento, se algum comando falhar, saia e repita o erro desse comando. Eu não quero ter que fazer algo como:
command1
if [ $? -ne 0 ]; then
echo "command1 borked it"
fi
command2
if [ $? -ne 0 ]; then
echo "command2 borked it"
fi
E assim por diante ... ou algo assim:
pipefail -o
command1 "arg1" "arg2" | command2 "arg1" "arg2" | command3
Porque os argumentos de cada comando que acredito (corrija-me se estiver errado) interferirão um no outro. Esses dois métodos me parecem terrivelmente longos e desagradáveis, então estou aqui pedindo um método mais eficiente.
set -e
é uma ideia horrível . Veja os exercícios no BashFAQ # 105 discutindo apenas alguns dos casos inesperados apresentados, e / ou a comparação mostrando incompatibilidades entre diferentes implementações de shells (e versões de shell ') em in-ulm.de/~mascheck/various/set -e .
set -euo pipefail
.