以逻辑测试的输出为条件的变量的一行定义

以逻辑测试的输出为条件的变量的一行定义

bash编程中,我总是按照以下长手方式定义条件变量

dog=1
if [[ $dog -eq 1 ]] ; then
   cow=1
else
   cow=0
fi

这显然是极其低效的。我MATLAB可以执行以下操作

cow=(dog==1)

即一行而不是五行。在 bash 中是否有类似的方法可以做到这一点?感谢您的任何建议。

答案1

对于纯粹基于整数的赋值,您可以使用expr ? expr : expr条件运算符:

dog=1
cow=$((dog ? 1 : 0))

这仅适用于牛和狗的整数值,并且仅测试(此处为狗)零/非零值。

dog=2
cow=$((dog ? 42 : 7))

相关内容