Чи є щось подібне до 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
Тому що аргументи кожної команди, на яку я вірю (виправте мене, якщо я помиляюся) будуть заважати один одному. Ці два способи здаються мені жахливими довгодушними і бридкими, тому я тут закликаю до більш ефективного методу.
set -e
це жахлива ідея. Дивіться вправи в BashFAQ # 105, де обговорюються лише декілька несподіваних крайових випадків, які він вводить, та / або порівняння, що показує несумісність між реалізаціями різних оболонок (та версій оболонок) за адресою in-ulm.de/~mascheck/various/set -е .
set -euo pipefail
.