Skip to main content

Posts

Showing posts from June, 2013

Programatically named variables in bash.

Suppose you wanted to do the following in bash:

for label in a b c d e f do variable_${label}=${label} done
This has the intended result of setting a series of variables: variable_a variable_b variable_c variable_d variable_e variable_f
But if what if you want to dereference them programatically? for label in a b c d e f do echo ${variable_${label}} done is not acceptable bash syntax.
But there is a way...
We can abuse export and env. We set them with: for label in a b c d e f do export variable_${label}=${label} done We can then programmatically dereference the variables by searching for them in the output of env and using awk to get their value. for label in a b c d e f do echo "`env | grep variable_${label} | awk -F= '{print $2}'`" done How's that for bash abuse?