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

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

我不断收到错误如何在bash中正确执行while循环?

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

当在循环中运行./process.sh 5

+0

你的循环开始用'C = 1',然后运行,而'C!= 0'并减去'1'每次从C吗?这不是一个循环。 – FatalError 2013-03-10 00:37:17

+0

我改变了错误 – user784637 2013-03-10 00:38:41

回答

5

$手段,使$f “价值” 被评估为字符串文字1。所以......

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

应该

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

,它应该是

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