Bash 检查shell中的数字是否为偶数
我需要检查一个数字是否为偶数 这是我试过的Bash 检查shell中的数字是否为偶数,bash,math,Bash,Math,我需要检查一个数字是否为偶数 这是我试过的 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,但它进入了一个无限循环eChe
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)
操作符计算剩余部分。所以281%2
就是1
,因为281
除以2
就是140
,剩下的1你离得太近了!这样想吧。表达式中Y只有两个可能的答案
Y = X % 2
对于X的所有值,它们是什么?玩一些X的值,看看你是否能得出Y的值
接下来,你能确定Y的值代表X的值吗?也就是说,你能用Y的值来回答你试图解决的问题吗?Nici是对的,“%”是模,并给出除法的剩余部分
您的脚本可以简化如下:
if [[ $((var % 2)) -eq 0 ]];
then echo "$var is even";
else echo "$var is odd";
fi
您可以执行以下简单操作:
eCheck=$(( $newY & 1 ))
要在bash中使用按位运算符,可以使用expr
#!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
evenCheck=$(expr $newY % 2)
if [ $evenCheck = 0 ] ;
then echo "number is even";
else echo "number is odd";
fi
done
正如您提到的,您正在检查单个no,因此不需要使用循环。这是我的代码
read -p "Enter a number: " num
if [ $((num%2)) -eq 0 ]
then
echo "Entered Number is even:"
else
echo "Entered Number is odd:"
fi
由于此问题标记为Bash,因此检查Bash中的数字是否为偶数的正确方法是:
if ((num%2 == 0)); then
echo "The number is even"
fi
或者更简短地说:
if ((num % 2)); then
echo "The number is even"
fi
在这种情况下,我们不需要使用[[…]]
另见:
- (在Unix和Linux堆栈交换上)
set-vx
。Good luck.Expression,$(expo$1%2)表达式前面的$符号将表达式指定为一个变量和提要以进行比较$1:用于访问作为bash filename.sh 1传递的参数。(expr$1%2)对脚本上传递的参数($1)进行数学计算。2.($(expr$1%2)-eq 0)这里-eq表示等于,并检查余数是否为零。在数学计算之前做一个$符号,将余数作为反馈反馈反馈给下一个执行的命令。3. && 是二进制文件及其在条件语句为true之前执行的iff。4. || 是二进制还是,如果之前的条件语句为false,它将执行。这似乎是重复的,或者您的答案与Harpreet Khanduja的答案或Harpreet Khanduja的答案有什么不同?在Harpreet one中,您可能会得到错误的输出,您只需要替换-eq 0];至-eq 0]。“0和括号之间的空格”。此答案中存在语法错误。正确的检查方法是:if((x%2==0));然后…
。虽然这段代码可以为这个问题提供一个解决方案,但最好添加上下文来说明为什么/如何工作。这可以帮助未来的用户学习,并将这些知识应用到他们自己的代码中。在解释代码时,用户可能会以投票的形式向您提供正面反馈。您根本不需要[…]]
。只要(…)
就行了<代码>如果((变量%2==0));然后…。
if ((num % 2)); then
echo "The number is even"
fi