Variables: Pointers
You can use indirection to access different variables. So in effect a variable
acts as pointer to another variable. You do an indirect read from a
variable with ${!}
a=1
b=2
c=3
for p in a b c
do
printf "%s=%s\n" "${p}" "${!p}"
done
Output:
a=1
b=2
c=3
To perform an indirect write into a variable use printf -v
. You can
also use eval
but that’s a bit more error prone due to quoting in my opinion.
i=1000
for p in a b c
do
printf -v "${p}" "%d" "${i}"
i=$(( i + 1000 ))
done
printf "a=%s\n" "${a}"
printf "b=%s\n" "${b}"
printf "c=%s\n" "${c}"
Output:
a=1000
b=2000
c=3000
Pointers can be very powerful and open up lots of opportunities.