如何在bash中使用变量名生成for循环编号序列?
有人能解释一下我如何在bash for循环中使用变量名来生成一系列数字吗如何在bash中使用变量名生成for循环编号序列?,bash,for-loop,sequences,Bash,For Loop,Sequences,有人能解释一下我如何在bash for循环中使用变量名来生成一系列数字吗 for year in {1990..1997} do echo ${year} done 结果: 1990年 1991 1992 1993 1994 1995 1996 一九九七年 然而 year_start=1990 year_end=1997 for year in {${year_start}..${year_end}} do echo ${year} done 结果: {1990..1997} 我怎样
for year in {1990..1997}
do
echo ${year}
done
结果:
1990年
1991
1992
1993
1994
1995
1996
一九九七年
然而
year_start=1990
year_end=1997
for year in {${year_start}..${year_end}}
do
echo ${year}
done
结果:
{1990..1997}
我怎样才能使第二个案例起作用?否则我就得写冗长的while循环。
非常感谢。请尝试以下内容:
start=1990; end=1997; for year in $(seq $start $end); do echo $year; done
你可以用这样的东西
for (( year = ${year_start}; year <=${year_end}; year++ ))
do
echo ${year}
done
请修改如下:
for year in $(eval echo "{$year_start..$year_end}")
就个人而言,我更喜欢使用((year=${year\u start})的
;year@chepner想知道不使用反勾号的原因。它们会导致其他问题吗?seq
命令已经过时,不建议用于bash v3.x+
@Sithsu它们很难阅读,也很难嵌套。没有真正的理由使用它们来代替$(…)
。
for year in $(eval echo "{$year_start..$year_end}")