'try'ステートメントのように、bash内にある、複数のコマンドのpipefailに似たものはありますか?私はこのようなことをしたいと思います:
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
私が信じている各コマンドの引数(間違っている場合は修正してください)が互いに干渉するからです。これらの2つの方法はひどく時間がかかり、厄介なように思えるので、ここではより効率的な方法を求めています。
set -e
は恐ろしいアイデアです。参照BashFAQの練習#105で実装(ちょうどそれが導入され、予期しないエッジケースの数、及び/又は異なるシェルとシェルのバージョン)との間の非互換性を示す比較を議論in-ulm.de/~mascheck/various/setを-e。
set -euo pipefail
。