是否有类似于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中不同shell(和shell版本)实现之间的不兼容性。 -e。
set -euo pipefail
。