【问题标题】:How to test multiple bash function boolean return values at once in a single conditional?如何在单个条件下一次测试多个 bash 函数布尔返回值?
【发布时间】:2020-09-03 09:02:01
【问题描述】:

标题“应该”就足够了。

我将自己发布一个解决方案以造福他人,因为当时我找不到一个简单、通用的解决方案。

【问题讨论】:

  • “更具体”,因为它是关于 C++,而不是 Bash。
  • @StefanvandenAkker - 感谢您发现这一点!我会删除链接。张贴在匆忙中。

标签: bash boolean return-value


【解决方案1】:
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
  • 必须使用布尔逻辑运算符&&||
  • 还要注意在测试失败时在 ! 和函数之间留一个空格

【讨论】:

  • 所以你找到了你的问题的答案,参数应该被引用以避免分裂,并且第二个函数可能不会被调用(在&&之后当第一个条件为假或||当第一个条件为假时第一个条件为真)。
  • 好点,谢谢@NahuelFouilleul - 添加了引号。
猜你喜欢
  • 2014-04-26
  • 2011-07-22
  • 2017-05-24
  • 2011-03-14
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
相关资源
最近更新 更多