2017-07-14 37 views
0

这个while循环我是新手。请帮助我这个什么错在UNIX

输出近说意外的标记“做”

语法错误代码是

if [ $# -eq 0 ]; 
then 
echo "Command line arguments are missing." 
else 
n=$1 
sum=0 
while[ $n -gt 0 ] 
do 
    rem=$(($n % 10)) 
    sum=$(($sum + $rem)) 
    n=$(($n/10)) 
done 
echo "Sum of digit for given number is $sum " 
fi 
+0

如果你是一个新手,停止使用'['。至少,只需将其替换为等价的,但更具可读性的“测试”。 '如果测试$#-eq 0; ..'和'while test $ n -gt 0; ...'。立即明白为什么'whiletest $ n ...'是一个错误。 –

回答

0

while之后的空格。尝试了这一点:

if [ $# -eq 0 ]; 
then 
    echo Command line arguments are missing. 
else 
    n=$1 
    sum=0 
    while [ $n -gt 0 ]; 
    do 
    rem=$(($n % 10)) 
    sum=$(($sum + $rem)) 
    n=$(($n/10)) 
    done 
    echo "Sum of digit for given number is $sum" 
fi 
0

之前和[]后有空格。
可以更换while循环与

sum=$(($(echo $1| sed 's/./&+/g; s/+$//')))