有人可以解释我如何在bash for循环中使用变量名生成一系列数字?
for year in {1990..1997}
do
echo ${year}
done
结果:
1990 1991年 1992年 1993年 1994年 1995年 1996年 1997年
然而
year_start=1990
year_end=1997
for year in {${year_start}..${year_end}}
do
echo ${year}
done
结果:
{1990..1997}
如何让第二种情况起作用?否则我必须写一些乏味的循环。 非常感谢。
答案 0 :(得分:14)
你可以使用这样的东西
for (( year = ${year_start}; year <=${year_end}; year++ ))
do
echo ${year}
done
seq
命令已过时,最好避免使用。
http://www.cyberciti.biz/faq/bash-for-loop/
如果您想要使用以下语法,那么
for year in {${year_start}..${year_end}}
请修改如下:
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 :(得分:4)
请尝试以下操作:
start=1990; end=1997; for year in $(seq $start $end); do echo $year; done