Parameter indirection

suggest change

Bash indirection permits to get the value of a variable whose name is contained in another variable. Variables example:

$ red="the color red"
$ green="the color green"

$ color=red
$ echo "${!color}"
the color red
$ color=green
$ echo "${!color}"
the color green

Some more examples that demonstrate the indirect expansion usage:

$ foo=10
$ x=foo
$ echo ${x}      #Classic variable print  
foo  

$ foo=10
$ x=foo
$ echo ${!x}     #Indirect expansion
10

One more example:

$ argtester () { for (( i=1; i<="$#"; i++ )); do echo "${i}";done; }; argtester -ab -cd -ef 
1   #i expanded to 1 
2   #i expanded to 2
3   #i expanded to 3

$ argtester () { for (( i=1; i<="$#"; i++ )); do echo "${!i}";done; }; argtester -ab -cd -ef 
-ab     # i=1 --> expanded to $1 ---> expanded to first argument sent to function
-cd     # i=2 --> expanded to $2 ---> expanded to second argument sent to function
-ef     # i=3 --> expanded to $3 ---> expanded to third argument sent to function

Feedback about page:

Feedback:
Optional: your email if you want me to get back to you:



Table Of Contents