1

我想要一个像下面这样的 bash 循环函数,顺序递减:

for i in {8..2}
do
...
done

并且 8 和 2 可以设置为变量,例如:

start=$1
end=$2

for i in {$start..$end}
do
...
done

但似乎这个剂量不起作用。我怎样才能做到这一点?

感谢所有快速回答,后来我在这里找到了答案。 带有变量 bash 的降序循环

解决方案:

start=$1
end=$2

for i in `seq $start -1 $end`
do
...
done

谢谢~

4

3 回答 3

1
$ start=8; end=2; for ((i = start; i >= end; i--)); do echo "${i}"; done
8
7
6
5
4
3
2
于 2013-08-02T08:06:59.770 回答
0

没有。但这里有一个解决方法

start=$1
end=$2

for i in $(seq $start $end)
do
...
done
于 2013-08-01T15:00:19.800 回答
0

您不能在那里使用变量替换,因为 {n..m} 已经是一个。尝试使用seq

for i in `seq $start $end`
do
  ...
done

或者,您可以执行一个 while 循环,手动增加循环变量:

i=$start
while [ $i -lt $end ]; do
  ...
  : $[i++]
done

虽然你必须知道是否$start小于或大于$end

于 2013-08-01T15:01:37.847 回答