检查一个数字是否在shell中

rab*_*ius 5 linux math bash ubuntu

我需要检查数字是否均匀.

这是我尝试过的.

newY="281"
eCheck=$(( $newY % 2 ))

echo $newY
echo $eCheck
while [ $eCheck -eq 0 ]; do
        newY=$((newY-1))
        eCheck=$(( $newY % 2 ))
        echo $newY
done
Run Code Online (Sandbox Code Playgroud)

......回来eCheck = 1 怎么样?281/2 = 140.5

我也尝试过使用bc,但它进入了一个无限循环eCheck=$(echo "scale=1;$newY%2" | bc)

bla*_*ith 6

你可以做一个简单的事情:

eCheck=$(( $newY & 1 ))
Run Code Online (Sandbox Code Playgroud)

在bash中使用按位运算符.


小智 5

Nici是对的,"%"是模数,并给你剩下的除法.

您的脚本可以简化如下:

if [[ $((var % 2)) -eq 0 ]]; 
   then echo "$var is even"; 
   else echo "$var is odd"; 
fi
Run Code Online (Sandbox Code Playgroud)

  • 你根本不需要 `[[ ... ]]` 。只要 `((...))` 就可以了。`如果((var%2 == 0)); 然后...`。 (3认同)

ric*_*ici 2

运算%符计算余数281 % 2也是如此,1因为281除以2is140余数为1