2011-01-13 157 views
3
$ cat fromhere.sh 
#!/bin/bash 

FROMHERE=10 

for i in $(seq $FROMHERE 1) 
do 
echo $i 
done 
$ sh fromhere.sh 
$ 

它爲什麼不起作用?
我找不到任何搜索谷歌降序循環的例子,甚至沒有變量。爲什麼?
降序循環變量bash

回答

13

應指定與NGF的增量:

seq $FROMHERE -1 1 
1

你可能會喜歡的,而不是產卵外部序列猛砸內置殼牌算術:

i=10 
while ((i >= 1)); do 
    echo $((i--)) 
done 
+0

他可以用{} 10..1太 – marco 2011-01-13 11:48:36

6

Bash有一個for循環語法以此目的。沒有必要使用外部seq實用程序。

#!/bin/bash 

FROMHERE=10 

for ((i=FROMHERE; i>=1; i--)) 
do 
    echo $i 
done 
1

環向下與(停止播放)

for ((q=500;q>0;q--));do echo $q ---\>\ `date +%H:%M:%S`;sleep 1;done && pkill mplayer 
500 ---> 18:04:02 
499 ---> 18:04:03 
498 ---> 18:04:04 
497 ---> 18:04:05 
496 ---> 18:04:06 
495 ---> 18:04:07 
... 
... 
... 
5 ---> 18:12:20 
4 ---> 18:12:21 
3 ---> 18:12:22 
2 ---> 18:12:23 
1 ---> 18:12:24 

圖案:

for ((...)); do ... ; done 

例如

for ((i=10;i>=0;i--)); do echo $i ; done 

結果

10 
9 
8 
7 
6 
5 
4 
3 
2 
1 
0 

與同時: 第一步

AAA=10 

然後

while ((AAA>=0));do echo $((AAA--));sleep 1;done 

或: 「AAA--」 到而

while (($((AAA-- >= 0))));do echo $AAA;sleep 1;done 

「睡眠1」是不需要