我希望能够始终执行 validateA 和 validateB:
function validateA() {
echo "A [ok]"
return 0
}
function validateB() {
echo "B [ok]"
return 0
}
if ! validateA | ! validateB; then
echo "validation [fail]"
exit 1
else
echo "validation [ok]"
exit 0
fi
最佳答案
你可以不管调用它们并捕获返回值:
function validateA() {
echo "A [fail]"
return 1
}
function validateB() {
echo "B [ok]"
return 0
}
validateA ; vA=$?
validateB ; vB=$?
if [[ $vA -ne 0 || $vB -ne 0 ]] ; then
echo "validation [fail]"
exit 1
else
echo "validation [ok]"
exit 0
fi
这个输出:
A [fail]
B [ok]
validation [fail]
关于bash - bash 是否有不短路的 bool 值和/或运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8118056/