如何为bash循环数组设置变量

时间:2013-08-01 14:55:58

标签: bash variables loops

我希望有一个像下面这样的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

感谢〜

3 个答案:

答案 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