while循环中如何循环地提取命令行参数?

while循环中如何循环地提取命令行参数?

大家好! 我初学Shell编程,想用while循环做一个对命令行参数求和的脚本sum ,  命令形式为 sum  10 20  30  ,可是不知道怎么其提取命令行参数,我知道在for循环中是可以很方便的 for i  in $* ,但是在while循环中就不知道该怎么做了。请大家帮忙,谢谢!:confused:      
复制内容到剪贴板
代码:
[color=red]# cat sum.sh[/color]
#! /bin/bash

sum=0
for n do
    ((sum += n))
done
echo "sum = $sum"
[color=red]# ./sum.sh 1 2 3 4 5[/color]
sum = 15
      
$1,$2,$3.....用for循环是可以很方便的引用的,for i in $*,

但是用while循环不知道该怎么引用阿?以下的代码是不能用的,
i=1
while i -le $#
do
echo $i
let i=i+1
done

不论命令行参数是什么,显示的结果始终都是1,2,3,........

该怎么解决呢?谢谢!
:confused:      
复制内容到剪贴板
代码:
[color=red]# cat sum.sh[/color]
#! /bin/bash

sum=0
while [ "$1" ]; do
    ((sum += "$1"))
    shift
done
echo "sum = $sum"
[color=red]# ./sum.sh 1 2 3 4 5[/color]
sum = 15
      
谢谢啦!不过while [ "$1" ]是代表什么意思呢?是不是代表$1为非空呢?      
you're right      
while [ -n "$1" ];
do
      ((sum += "$1"))
       shift
done
echo "$sum"      
perl -e 'for($i=0;$i<@ARGV;$i++){print "$ARGV[$i]\n";}'