【问题标题】:equivalent of "(cond)? val_true : val_false" in shell bash [duplicate]相当于shell bash中的“(cond)?val_true:val_false”[重复]
【发布时间】:2014-01-19 23:00:25
【问题描述】:

在 C 中我可以这样赋值:

val = (cond)? val_true : val_false;

相当于

if (cond) 
    val = val_true;
else
    val = val_false;

在 shell bash 中是否有 val=(cond)? val_true : val_false 的等价物?

【问题讨论】:

  • 它与被比较的那一款略有不同吗?对于新手来说有点混乱(尽管对于拥有 10.4K 代表的人来说不是)

标签: c linux bash shell


【解决方案1】:

假设你希望它有点像这样:

true=1
[ $true ] && p=1 || p=0

您所要做的就是在这些括号内保留您想要的任何条件。

如果有效,则跟随AND之后的分支,否则跟随OR之后的分支。

这等价于:

if [ $true ]; then p=1; else p=0; fi

所以你应该注意这个结构,以防万一遇到它,但可以说它比仅仅明确列出你在做什么更不可读。

【讨论】:

    猜你喜欢
    • 2020-02-11
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2011-12-09
    • 2021-08-20
    相关资源
    最近更新 更多