2013-03-10 3 views
2
#!/bin/bash 

f=1 
c=$1 
while [[ $c != 0 ]] 
do 
     $f=$(($c*$f)) 
     $c=$(($c-1)) 
done 
echo $c 

Я получаю ошибкуКак правильно выполнить этот цикл while в bash?

./process.sh: line 8: 1=0: command not found 
./process.sh: line 7: 5=5: command not found 

При запуске ./process.sh 5

+0

Ваш цикл начинается с 'с = 1', а затем проходит в то время' C! = 0 'и' 1 'вычитает из с каждый раз? Это не очень много. – FatalError

+0

Я изменил ошибку – user784637

ответ

5

$ означает "значение" так $f получает оценку в строковый литерал 1. Так что ...

$f=$(($c*$f)) 
    $c=$(($c-1)) 

должен быть

f=$(($c*$f)) 
    c=$(($c-1)) 
1

в петле, она должна быть

f=$(($c*$f)) 
c=$(($c-1))