如何在一个条件中同时测试多个bash函数的布尔返回值



标题"应该";足够

为了他人的利益,我会自己发布一个解决方案,因为当时我找不到一个简单、通用的解决方案。

if func1 "$arg1" && func2 "$arg2"; then
echo 'both succeeded'
fi
if func1 "$arg1" || func2 "$arg2"; then
echo 'at least one succeeded'
fi
if ! func1 "$arg1" && ! func2 "$arg2"; then
echo 'both failed'
fi
if ! func1 "$arg1" || ! func2 "$arg2"; then
echo 'at least one failed'
fi

关键点是:

  • Bash认为函数返回值0表示true1或另一个整数表示false
  • 必须使用布尔逻辑运算符&&||
  • 测试故障时,还要注意在!和函数之间留出空间

最新更新