【问题标题】:Groups of compound conditions in Bash test [duplicate]Bash测试中的复合条件组[重复]
【发布时间】:2013-02-04 13:35:13
【问题描述】:

我想在 Bash if 语句中包含一些条件组。具体来说,我正在寻找类似以下的内容:

if <myCondition1 and myCondition2> or <myCondition3 and myCondition4> then...

如何按照我描述的方式将条件组合在一起,以便在 Bash 中与一个 if 语句一起使用?感谢您对此提出的任何想法。

【问题讨论】:

  • 我找到了,但找不到分组技巧(并且不知道要搜索的术语才能找到它)。如有疑问,请询问。感谢您的链接!
  • 我不确定这是否应该被标记为重复。这个问题的答案专门针对分组条件,而重复的答案没有。
  • 我总是很惊讶,如果问题显然不是重复的,那么它们是多么容易被标记为重复。这个问题是关于分组条件的。其他问题的答案中没有任何内容可以真正回答这个问题。

标签: bash if-statement


【解决方案1】:

使用 && (and) 和 || (或)运算符:

if [[ expression ]] && [[ expression ]] || [[ expression ]] ; then

它们也可以在单个 [[ ]] 中使用:

if [[ expression && expression || expression ]] ; then

最后,您可以将它们分组以确保评估顺序:

if [[ expression && ( expression || expression ) ]] ; then

【讨论】:

  • IMO 这是一个比“重复”更清晰的答案。在第三个示例中,确保使用双括号 - [[ ]]
  • 对于那些关心与其他 shell 类型的兼容性的人,我会注意到,执行上述操作似乎不适用于单括号 []
  • 请注意,在第一个示例中,&amp;&amp;|| 是 shell 的管道运算符。在第二个和第三个示例中,它们是由[[...]] 条件命令解析器处理的运算符。第一个适用于零和非零的退出值,其余的适用于 true 和 false 的返回值。虽然所有示例都有效,但它们的有效原因各不相同。
  • 这个问题回答了我。我想知道是否可以使用大括号进行分组,然后在分组后添加更多条件。这表明使用 unix.stackexchange.com/questions/290146/… .
  • 您如何分解多个条件的长行(例如超过 80 个字符)?行继续 `` 然后在逻辑运算符之后换行,这对哪里有意义?
猜你喜欢
  • 2020-10-23
  • 2011-07-19
  • 2015-12-20
  • 2013-05-22
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
  • 2019-03-02
  • 1970-01-01
相关资源
最近更新 更多