bash if else和变量赋值

时间:2016-04-18 12:33:22

标签: bash

如何在变量赋值之间添加if else?

类似的东西:

var="statement "[ $var2 -eq 0 ] && "is true" || "is false"

我想避免:

if [ $var2 -eq 0 ]; then
    var="statement is true"
else
    var="statement is false"
fi

可以这样做吗?

由于

3 个答案:

答案 0 :(得分:2)

执行:

[ "$var2" -eq 0 ] && var="statement is true" || var="statement is false"

从技术上讲,如果var="statement is false"[ "$var2" -eq 0 ]失败,var="statement is true"将失败,但var="statement is true"失败的可能性几乎为零。

答案 1 :(得分:1)

不确定无论如何都可以认为这是一个很好的编码,但这里有两种简洁的方法(如果你使用的话,请在你的代码中添加注释以了解正在进行的操作这些)

这种方式初始化变量" var",并评估" var1" (也不要使用这些变量名称,即使是在SO的帖子中),看它是否为非零值/空值。然后追加为真或假。

var="statement is "
(($var1)) && var+=true || var+=false

另一种方法是改变你的逻辑,将var设置为"" (无)如果为假,则设置为" true"如果是真的。然后将未设置的变量默认为" false",并返回分配给它的真实值(如果已设置)。男人猛击,寻找`: - '了解更多信息。

var="statement is ${var1:-false}"

答案 2 :(得分:0)

$(...)个表达式嵌套在双引号对

因此,您可以执行以下操作:

var="abc$( (($var2==0)) && printf '%s' ' is true' || printf '%s' ' is false')"
相关问题