Apakah ada sesuatu yang mirip dengan pipefail untuk banyak perintah, seperti pernyataan 'coba' tetapi dalam bash. Saya ingin melakukan sesuatu seperti ini:
echo "trying stuff"
try {
command1
command2
command3
}
Dan pada titik mana pun, jika ada perintah gagal, putus dan gema kesalahan dari perintah itu. Saya tidak mau harus melakukan sesuatu seperti:
command1
if [ $? -ne 0 ]; then
echo "command1 borked it"
fi
command2
if [ $? -ne 0 ]; then
echo "command2 borked it"
fi
Dan seterusnya ... atau yang seperti:
pipefail -o
command1 "arg1" "arg2" | command2 "arg1" "arg2" | command3
Karena argumen dari setiap perintah yang saya percayai (benar jika saya salah) akan saling mengganggu. Kedua metode ini nampaknya sangat bertele-tele dan tidak menyenangkan bagi saya, jadi saya di sini mencari metode yang lebih efisien.
set -e
adalah ide yang mengerikan . Lihat latihan di BashFAQ # 105 yang membahas beberapa kasus tepi tak terduga yang diperkenalkannya, dan / atau perbandingan yang menunjukkan ketidaksesuaian antara implementasi shell (dan versi shell) yang berbeda di in-ulm.de/ ~mascheck/various/set -e .
set -euo pipefail
.