shell 脚本在 if 语句期间崩溃?

shell 脚本在 if 语句期间崩溃?
for hi in `seq 0 100`
do
    new_val=1
    if `expr $hi % 5` -eq 5
    then
        echo hello
    elif `expr $hi % 5` -eq 6
    then
        echo bye
    elif `expr $hi % 5` -eq 7
    then
        echo whats up
    fi
    echo $new_val
done

为什么会崩溃?目标是检查循环数模 5 是否等于 5,6 或 7。

答案1

更正后的脚本应类似于:

#!/bin/sh 

for hi in $(seq 0 100)
do
    if [ "$(expr $hi % 5)" -eq 5 ]
    then
        echo hello
    elif [ "$(expr $hi % 5)" -eq 6 ]
    then
        echo bye
    elif [ "$(expr $hi % 5)" -eq 7 ]
    then
        echo whats up
    fi
    echo "$hi"
done

但该循环永远不会进入任何 if,因为模 5 运算的余数永远不会是 5、6 或 7。

相关内容