2

bash 中是否有针对这个 C(和其他一些语言)“函数”的解决方案?

condition ? true_value : false_value

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

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

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

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

4

2 回答 2

2

我常用的成语是:

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 )

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

于 2013-05-28T04:57:37.950 回答
1

bash没有C风格ternary operator。但是你可以像这样模拟它

[[ condition ]] && true_value || false_value

根据更新的问题:

./configure $( [[ want_foo == 1 ]] && echo --enable-foo || echo --disable-foo )
于 2013-05-28T05:03:53.643 回答