检查一个数字是否在shell中

我需要检查一个数字是否是偶数。

这是我试过的。

newY="281" eCheck=$(( $newY % 2 )) echo $newY echo $eCheck while [ $eCheck -eq 0 ]; do newY=$((newY-1)) eCheck=$(( $newY % 2 )) echo $newY done 

…返回eCheck = 1它怎么可能? 281/2 = 140.5

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

你可以做一个简单的:

 eCheck=$(( $newY & 1 )) 

在bash中使用按位运算符。

Nici是正确的,“%”是模数,并给你余下的部门。

你的脚本可以简化如下:

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

%运算符计算余数 。 所以281 % 21 ,因为281除以2140 ,余数是1

你太亲近了! 像这样想。 表达式中Y只有两个可能的答案

 Y = X % 2 

对于X的所有值,它们是什么? 玩X的几个值,看看你是否能拿出Y的值。

接下来,是否有什么可以确定Y对Y的价值有什么价值? 也就是说,你可以用Y的值来回答你正试图解决的问题吗?

 #!bin/bash echo "Type the input integer, followed by [Enter]:" read x if [ $((x%2)) -eq 0]; then echo "$x is even" else echo "$x is odd" fi Yes "%" is modulo, it gives you the remainder, like others have mentioned Thought this answer might be helpful to new linux users