我需要检查一个数字是否是偶数。
这是我试过的。
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 % 2
是1
,因为281
除以2
是140
,余数是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