我希望有一个像下面这样的bash循环函数,顺序递减:
for i in {8..2}
do
...
done
8和2可以设置为变量,如:
start=$1
end=$2
for i in {$start..$end}
do
...
done
但似乎这不起作用。我怎么能这样做?
感谢所有快速解答,后来我在这里找到了答案。 descending loop with variable bash
溶液:
start=$1
end=$2
for i in `seq $start -1 $end`
do
...
done
感谢〜
答案 0 :(得分:1)
$ start=8; end=2; for ((i = start; i >= end; i--)); do echo "${i}"; done
8
7
6
5
4
3
2
答案 1 :(得分:0)
不。但这是一个解决方法
start=$1
end=$2
for i in $(seq $start $end)
do
...
done
答案 2 :(得分:0)
你不能在那里使用变量替换,因为{n..m}已经是一个。
尝试使用seq
:
for i in `seq $start $end`
do
...
done
或者,您可以通过手动执行while循环递增循环变量:
i=$start
while [ $i -lt $end ]; do
...
: $[i++]
done
虽然您必须知道$start
是小于还是大于$end