我是这么理解楼上提问题的意思:求前n个奇数之和,数字n可变。比如n=5,则5前面的奇数为1和3并求和为4。如果n=9,则9前面的奇数为1,3,5,7并求和为16。不知道我理解的对不?如果是这样的,那么如下所示:
代码:
#!/bin/bash
sum=0
k=0
while [ $((2*$k+1)) -lt $1 ]
do
echo $((2*$k+1))
sum=$((2*$k+1+$sum))
k=$(($k+1))
done
echo "sum: $sum"
下面有输出测试的奇数,不要输出可以删除掉就行了:
#!/bin/bash
sum=0
n=$1
for ((i = 0; i < n; ++i))
do
# 测试输出这几个奇数
echo $((2 * i + 1))
((sum += 2 * i + 1))
done
echo "Sun: $sum"
保存成 sum.sh
调用的时候用参数传入 n,比如 bash sum.sh 4 就可以算前四的数,简单起见没有对参数做有效性的判断。