¿Hay algo similar a pipefail para múltiples comandos, como una declaración 'try' pero dentro de bash? Me gustaría hacer algo como esto:
echo "trying stuff"
try {
command1
command2
command3
}
Y en cualquier momento, si algún comando falla, abandone y repita el error de ese comando. No quiero tener que hacer algo como:
command1
if [ $? -ne 0 ]; then
echo "command1 borked it"
fi
command2
if [ $? -ne 0 ]; then
echo "command2 borked it"
fi
Y así sucesivamente ... o algo así como:
pipefail -o
command1 "arg1" "arg2" | command2 "arg1" "arg2" | command3
Porque creo que los argumentos de cada comando (corrígeme si me equivoco) interferirán entre sí. Estos dos métodos me parecen horriblemente largos y desagradables, así que estoy aquí pidiendo un método más eficiente.
set -e
es una idea horrible . Vea los ejercicios en BashFAQ # 105 discutiendo solo algunos de los casos extremos inesperados que presenta, y / o la comparación que muestra incompatibilidades entre diferentes implementaciones de shells (y versiones de shell) en in-ulm.de/~mascheck/various/set -e .
set -euo pipefail
.