如何在bash中使用变量名生成循环数序列?

How to generate for loop number sequence by using variable names in bash?

本问题已经有最佳答案,请猛点这里访问。

任何人都可以解释我如何在bash for循环中使用变量名来生成一系列数字?

1
2
3
4
for year in {1990..1997}
do
  echo ${year}
done

结果:

1990年
1991年
1992年
1993年
1994年
1995年
1996年
1997年

然而

1
2
3
4
5
6
year_start=1990
year_end=1997
for year in {${year_start}..${year_end}}
do
  echo ${year}
done

结果:

{}1990..1997

如何让第二种情况起作用? 否则我必须写一些乏味的循环。
非常感谢。


你可以使用这样的东西

1
2
3
4
for (( year = ${year_start}; year <=${year_end}; year++ ))
do
  echo ${year}
done

seq命令已过时,最好避免使用。

http://www.cyberciti.biz/faq/bash-for-loop/

如果你想要真正的坏使用以下语法,

1
for year in {${year_start}..${year_end}}

请修改如下:

1
for year in $(eval echo"{$year_start..$year_end}")

http://www.cyberciti.biz/faq/unix-linux-iterate-over-a-variable-range-of-numbers-in-bash/

就个人而言,我更喜欢使用for (( year = ${year_start}; year <=${year_end}; year++ ))


试试以下:

1
start=1990; end=1997; for year in $(seq $start $end); do echo $year; done