Эффективная проверка статуса выхода из Bash для нескольких команд

Есть ли что-то похожее на pipefail для нескольких команд, например, оператор 'try', но в bash. Я хотел бы сделать что-то вроде этого:

echo "trying stuff"
try {
    command1
    command2
    command3
}

И в любой момент, если какая-либо команда не удалась, выйти из нее и повторить ошибку этой команды. Я не хочу делать что-то вроде:

command1
if [ $? -ne 0 ]; then
    echo "command1 borked it"
fi

command2
if [ $? -ne 0 ]; then
    echo "command2 borked it"
fi

И так далее ... или что-то вроде:

pipefail -o
command1 "arg1" "arg2" | command2 "arg1" "arg2" | command3

Потому что аргументы каждой команды, как я считаю (поправьте меня, если я ошибаюсь), будут мешать друг другу . Эти два метода кажутся мне ужасно многословными и неприятными, поэтому я предлагаю более эффективный метод.

251
задан Andy Shulman 27 November 2014 в 20:39
поделиться