C中的bash条件扩展[重复]

Posted

技术标签:

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

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

condition ? true_value : false_value

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

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

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

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

【问题讨论】:

@mvp 请检查我的编辑!我想我并不是我想要的。 【参考方案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 应该处于状态,并且 == 而不是 =。谢谢!

以上是关于C中的bash条件扩展[重复]的主要内容,如果未能解决你的问题,请参考以下文章

删除文本文件bash中的文件扩展名[重复]

for循环子命令中的bash变量扩展[重复]

仅从 Bash 脚本中的路径获取文件名 [重复]

删除 bash 中的双重扩展

Bash条件表达式(-v)检查是不是设置了变量[重复]

简单条件在bash中得到错误的评估结果[重复]