для петли в оболочке - PullRequest
       1

для петли в оболочке

0 голосов
/ 26 августа 2011

Это домашнее задание для моего класса «Оперативные системы» ... Эта программа суммирует все цифры числа и возвращает сумму, например, 123 1 + 2 + 3 = 6 У меня ошибка в операторе for, но яне знаю, что я делаю не так ... помогите!

#!/bin/sh
read number
len=${#number}
cont=0
for(( i = 0 ; i < $len; i++ )) 
do
     cont=expr `$cont + number%10`
     number=`$number / 10`
done
echo "$cont"

Терминал выдает ошибку ./ej.sh: 5: Синтаксическая ошибка: плохо для переменной цикла

Ответы [ 2 ]

1 голос
/ 26 августа 2011

1) написать шебанг как / bin / bash

2) вам не нужен знак доллара в выражении

3) Вы должны обернуть весь expr в обратные черты

#!/bin/bash
read number
len=${#number}
cont=0
for (( i = 0 ; i < len; i++ )); do
     cont=`expr $cont + $number % 10`
     number=`expr $number / 10`
done
echo "$cont"
0 голосов
/ 26 августа 2011

Вы не упомянули, чисто ли это bash или нет ..

$ echo "1234"|sed 's/\(.\)/\1+/g;s/\+$//' | bc
10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...