我有这个:
for (( count= "$WP_RANGE_START"; count< "$WP_RANGE_STOP"+1; count=count+1 ));
WP_RANGE_START
的数字是1,而WP_RANGE_STOP
的数字是10。
现在这将继续1,2,... 10
我怎么能这样倒计时?(10,9,... 1)
答案 0 :(得分:3)
我猜你所拥有的镜像是
for (( count="$WP_RANGE_STOP"; count >= "$WP_RANGE_START"; count=count-1 ));
但写一个不那么麻烦的方法就是
for (( count=WP_RANGE_STOP; count >= WP_RANGE_START; count-- ));
算术上下文中不需要$
。
在处理文字时,bash有一个使用大括号扩展的范围扩展功能:
for i in {0..10}; # or {10..0} or what have you
但是使用变量很麻烦,因为括号扩展在参数扩展之前发生。在这些情况下,通常更容易使用算术循环。
答案 1 :(得分:0)
您的递增代码可以“简化”为:
for count in $(eval echo {$WP_RANGE_START..$WP_RANGE_STOP});
所以,减少你可以反转参数“
for count in $(eval echo {$WP_RANGE_STOP..$WP_RANGE_START});
假设您的bash版本为3或更高,您可以通过将其附加到范围来指定增量或减量,如下所示:
CHANGE=1
for count in $(eval echo {$WP_RANGE_STOP..$WP_RANGE_START..$CHANGE});
答案 2 :(得分:0)
for
循环是你的问题。
i=11 ; until [ $((i=i-1)) -lt 1 ] ; do echo $i ; done
10
9
8
7
6
5
4
3
2
1
你根本不需要任何基本原理。