Search code examples
unixfor-loopdynamic-variables

Dynamically changing variable name in unix through for loop


Today=$(date)
for i in {2..15}
do
 week_{$i}=$(date -d "$Today +$i week")
 echo ${week_2}
done

I am getting no values in output in BASH.


Solution

  • One way...

        Today=$(date)
        for i in {2..15} 
        do
            tmp=$(date -d "$Today +$i week")
            eval week_${i}=\$tmp
            eval echo  \$week_${i}
        done
        

    Second way...

        Today=$(date)
        for i in {2..15} 
        do
            week_[$i]=$(date -d "$Today +$i week")
            echo ${week_[$i]}
        done
    
    Third way...

        Today=$(date)
        for i in {2..15} 
        do
            eval echo \${week_${i}:=$(date -d "$Today +$i week")} > /dev/null
        done
    
        for i in {2..15} 
        do
            eval echo  \$week_${i}
        done