如何在变量赋值之间添加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
可以这样做吗?
由于
答案 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')"