在shell bash中,"(cond)? val_true : val_false"的等价表达式

27 浏览
0 Comments

在shell bash中,"(cond)? val_true : val_false"的等价表达式

在C语言中,我可以通过以下方式给变量赋值:

val = (cond)? val_true : val_false;

它等同于

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

在shell bash中是否有类似于val=(cond)? val_true : val_false的等价语法呢?

0
0 Comments

在Shell Bash中,如果想要实现类似于"(cond)? val_true : val_false"的条件判断语句,可以使用以下方式:

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"的语法结构。因此,需要通过其他方式实现类似的功能。

解决方法:

为了实现类似于三元条件运算符的功能,可以使用上述的方式。通过在方括号内设置条件,在AND和OR之间选择不同的分支来执行相应的语句。

然而,需要注意的是,这种写法可能会降低代码的可读性。相比于直接明确列出要执行的语句,使用三元条件运算符的方式可能会让代码更加难以理解。

因此,在编写Shell Bash脚本时,我们应该根据具体情况选择使用合适的条件判断方式,以保证代码的可读性和易维护性。

0