有这样的方法吗
int a = (b == 5) ? c : d;
使用Bash ?
有这样的方法吗
int a = (b == 5) ? c : d;
使用Bash ?
当前回答
三元运算符?:是if/else的缩写形式
case "$b" in
5) a=$c ;;
*) a=$d ;;
esac
Or
[[ $b = 5 ]] && a="$c" || a="$d"
其他回答
三元运算符?:是if/else的缩写形式
case "$b" in
5) a=$c ;;
*) a=$d ;;
esac
Or
[[ $b = 5 ]] && a="$c" || a="$d"
在Shell Scripting中,我们可以使用以下三种方式用于三元运算符:
[ $numVar == numVal ] && resVar="Yop" || resVar="Nop"
Or
resVar=$([ $numVar == numVal ] && echo "Yop" || echo "Nop")
Or
(( numVar == numVal ? (resVar=1) : (resVar=0) ))
更新:使用以下准备运行的示例扩展字符串计算的答案。这是利用上面提到的第二种格式。
$ strVar='abc';resVar=$([[ $strVar == 'abc' ]] && echo "Yop" || echo "Nop");echo $resVar
Yop
$ strVar='aaa';resVar=$([[ $strVar == 'abc' ]] && echo "Yop" || echo "Nop");echo $resVar
Nop
这里有另一个选项,你只需要指定你分配一次的变量,不管你分配的是字符串还是数字:
VARIABLE=`[ test ] && echo VALUE_A || echo VALUE_B`
只是一个想法。:)
(ping -c1 localhost&>/dev/null) && { echo "true"; } || { echo "false"; }
[ $b == 5 ] && { a=$c; true; } || a=$d
这将避免在&&和||之间的代码失败时意外执行||之后的部分。