【问题标题】:bash condition expansion as in C [duplicate]C中的bash条件扩展[重复]
【发布时间】:2013-05-22 22:55:08
【问题描述】:

对于这个 C(和其他一些语言)“函数”,bash 有什么解决方案吗?

condition ? true_value : false_value

只需要简单的检查:如果变量为0,则返回一个值,否则返回另一个值。

编辑 感谢您的回答,但我想要一个类似的:

./configure ${want_foo=1 ? --enable-foo : --disable-foo}

是否有可能或任何解决方法?

【问题讨论】:

  • @mvp 请检查我的编辑!我想我并不是我想要的。

标签: bash boolean conditional-statements


【解决方案1】:

我常用的成语是:

condition && echo yes || echo no

condition 可以是,例如,一个测试表达式:

b=$( (( a == 0 )) && echo A_VALUE || echo AN_OTHER_VALUE )

或者,如您修改后的问题:

./configure $( (( want_foo == 1 )) && echo --enable-foo  || echo --disable-foo )

为了清楚起见,您可以在算术表达式中直接使用?:。如果您想使用字符串,则只需要上述内容。

【讨论】:

  • 感谢您的回答。请检查编辑!
  • 谢谢,它也可以使用 :)
【解决方案2】:

bash 没有C 样式ternary operator。但是你可以像模拟它一样

[[ condition ]] && true_value || false_value

根据更新的问题:

./configure $( [[ want_foo == 1 ]] && echo --enable-foo || echo --disable-foo )

【讨论】:

  • 感谢您的回答。请检查编辑!
  • 它有效,但需要进行一些编辑:${want_foo} 应该处于状态,并且 == 而不是 =。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 2013-09-29
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 2023-04-07
相关资源
最近更新 更多