有这样的方法吗

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"

简单的三元

brew list | grep -q bat && echo 'yes' || echo 'no'

此示例将确定您是否使用自制程序安装bat

如果是,你会看到"是"

如果是false,你会看到"no"

我在这里添加了-q来抑制grepped字符串输出,所以你只能看到“yes”或“no”

真正的模式是这样的

doSomethingAndCheckTruth && echo 'yes' || echo 'no'

用bash和zsh测试

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

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

只是一个想法。:)

代码:

a=$([ "$b" == 5 ] && echo "$c" || echo "$d")
[ $b == 5 ] && { a=$c; true; } || a=$d

这将避免在&&和||之间的代码失败时意外执行||之后的部分。