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
请在此处更正错误
提前致谢
答案 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