echo "enter one no"
read n
rem='expr $n % 2'
if [ $rem -eq 0 ]
then
echo "Number $n is even"
else
echo "Number $n is odd"
fi
执行该程序时,bash 显示“争论过多”之类的消息。
答案1
那是因为您正在做:
if [ expr $n % 2 -eq 0 ]
怎么会?
因为
rem='expr $n % 2'
将变量分配rem
为字符串expr $n % 2
。
您需要命令替换:
rem=$(expr $n % 2)
还可以使用 的bash
本机算术运算符代替expr
:
rem=$(( $n % 2 ))
答案2
使用 read 的内置提示功能
read -p "Enter one num" n
更喜欢使用
$( . . .)
,单引号不会扩展命令。rem="$(expr $n % 2)"
使用变量时引用它们
"$rem"
if
和之间最多使用一行换行then
if [ "$rem" -eq 0 ] then