相当于shell bash中的“(cond)?val_true:val_false”[重复]

Posted

技术标签:

【中文标题】相当于shell bash中的“(cond)?val_true:val_false”[重复]【英文标题】:equivalent of "(cond)? val_true : val_false" in shell bash [duplicate] 【发布时间】: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 代表的人来说不是) 【参考方案1】:

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

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

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

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

这等价于:

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

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

【讨论】:

以上是关于相当于shell bash中的“(cond)?val_true:val_false”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

反弹shell基础

shell编程基础

相当于 dash shell 中的 pipefail

Bash Shell实用快捷键

bash中的数组

[原创]BASH沾衣十八贴