40

我应该如何更改它以检查是否val具有偶数或奇数数值?

val=2
if $((RANDOM % $val)); ...
4

3 回答 3

62
$ a=4

$ [ $((a%2)) -eq 0 ] && echo "even"
even

$ a=3

$ [ $((a%2)) -eq 0 ] && echo "even"
于 2013-03-27T13:26:07.907 回答
42
foo=6

if [ $((foo%2)) -eq 0 ];
then
    echo "even";
else
    echo "odd";
fi
于 2013-03-27T13:28:47.540 回答
12

$(( ... ))只是一个表达。它的结果出现在bash需要命令的地方。

与 POSIX 兼容的解决方案是:

if [ "$(( RANDOM % 2))" -ne 0 ]; 

但由于RANDOM在 POSIX 中也没有定义,您也可以使用正确的bash命令来完成这项工作:算术评估复合命令:

if (( RANDOM % 2 )); then
于 2013-03-27T13:28:20.637 回答