Could anybody explain how can I use variable names in bash for loop to generate a sequence of numbers?
for year in {1990..1997}
do
echo ${year}
done
Results:
1990 1991 1992 1993 1994 1995 1996 1997
However
year_start=1990
year_end=1997
for year in {${year_start}..${year_end}}
do
echo ${year}
done
Results:
{1990..1997}
How can I make the second case work? otherwise I have to write tedious while loops. Thanks very much.
You can use something like this
for (( year = ${year_start}; year <=${year_end}; year++ ))
do
echo ${year}
done
seq
command is outdated and best avoided.
http://www.cyberciti.biz/faq/bash-for-loop/
And if you want real bad to use the following syntax,
for year in {${year_start}..${year_end}}
please modify it as follows:
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/
Personally, I prefer using for (( year = ${year_start}; year <=${year_end}; year++ ))
.