有这样的方法吗

int a = (b == 5) ? c : d;

使用Bash ?


当前回答

在bash中还有一个非常相似但更简单的三元条件语句语法:

a=$(( b == 5 ? 123 : 321  ))

其他回答

这里有另一个选项,你只需要指定你分配一次的变量,不管你分配的是字符串还是数字:

VARIABLE=`[ test ] && echo VALUE_A || echo VALUE_B`

只是一个想法。:)

(ping -c1 localhost&>/dev/null) && { echo "true"; } || {  echo "false"; }

这是通解

也适用于字符串测试 感觉更像是一种表达 避免在条件失效时产生任何微妙的副作用

数值比较试验

a=$(if [ "$b" -eq 5 ]; then echo "$c"; else echo "$d"; fi)

字符串比较测试

a=$(if [ "$b" = "5" ]; then echo "$c"; else echo "$d"; fi)

如果您想要类似的语法,您可以使用它

a=$(( $((b==5)) ? c : d ))

如果条件仅仅是检查是否设置了变量,甚至还有更短的形式:

a=${VAR:-20}

如果VAR已设置,则会将VAR值赋给a,否则将为其赋值默认值20——这也可以是表达式的结果。

这种方法在技术上称为“参数展开”。