2017-07-14 38 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/+$//')))