Shell脚本我试图得到奇数的乘积

时间:2015-02-01 09:20:08

标签: shell

mul=1    
i=0    
while [ $i -ne 10 ]    
do    
    echo "Enter Number"   
    read num    
    if [ `expr $num % 2` -ne 0 ]     
    then    
        mul=`expr $mul*$num`     
    fi    
    i=`expr $i + 1`    
done    
echo mul of odd numbers = $mul

这是我试过的......它显示输出为1*3*5*7*9

请在此处更正错误

提前致谢

2 个答案:

答案 0 :(得分:0)

" *"有一个特殊的意义,因此你需要逃避它,并需要在两个变量之间有一个空格,如:

mul=`expr $mul \* $num`

请注意 - 不鼓励使用后退奖励,您可能希望使用以下内容:

mul=$(expr $mul \* $num)

答案 1 :(得分:0)

由于您没有提供一些细节(请参阅上面的评论),我不能保证这会回答您的问题并产生所需的结果。假设你的shell是bash。请通知我,我会相应地编辑答案。

请考虑以下更改。相关部分是从expr ...$(( ... ))的更改,即bash的built-in arithmetic expression evaluator

#!env bash

MUL=1
I=0
while [ $I -ne 10 ]
do
    echo "Enter Number"
    read NUM
    if [[ $(($NUM % 2)) -ne 0 ]] ; then
        MUL=$(($MUL * $NUM))
    fi
    I=$(($I + 1))
done
echo MUL of odd numbers = $MUL

这会产生以下输出:

$ sh foo.sh
Enter Number
1
Enter Number
2
Enter Number
3
Enter Number
4
Enter Number
5
Enter Number
6
Enter Number
7
Enter Number
8
Enter Number
9
Enter Number
0
MUL of odd numbers = 945