Birden fazla komut için pipefail'e benzer bir şey var mı, 'try' ifadesi gibi ama bash içinde. Böyle bir şey yapmak istiyorum:
echo "trying stuff"
try {
command1
command2
command3
}
Ve herhangi bir noktada, herhangi bir komut başarısız olursa, o komutun hatasını bırakın ve yankılayın. Gibi bir şey yapmak istemiyorum:
command1
if [ $? -ne 0 ]; then
echo "command1 borked it"
fi
command2
if [ $? -ne 0 ]; then
echo "command2 borked it"
fi
Ve benzeri ... ya da benzeri bir şey:
pipefail -o
command1 "arg1" "arg2" | command2 "arg1" "arg2" | command3
Çünkü inandığım her komutun argümanları (yanılıyorsam beni düzeltin) birbirini etkileyecektir. Bu iki yöntem bana çok uzun soluklu ve kötü görünüyor, bu yüzden burada daha verimli bir yöntem için başvuruyorum.
set -e
bir olan korkunç bir fikir. Bkz BashFAQ # 105 yılında egzersizleri onu tanıtır beklenmedik uç örnekleri sadece birkaç tartışırken, ve / veya en (ve kabuk versiyonlarını) uygulamaları farklı kabuklar arasındaki uyumsuzlukları gösteren karşılaştırma in-ulm.de/~mascheck/various/set -e .
set -euo pipefail
.