为什么这个shell脚本程序不起作用

为什么这个shell脚本程序不起作用
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

相关内容