2011-01-13 156 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”是不需要