在unix中循环时有什么问题

时间:2017-07-14 13:22:24

标签: shell unix sum-of-digits

我是新手。请帮我解决这个问题

输出显示意外令牌附近的语法错误'做'

代码是

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

[]之前和之后放置空格。
您可以用

替换while循环
sum=$(( $(echo $1| sed 's/./&+/g; s/+$//' ) ))