Reputation: 3811
I pass a string as an argument to a shell script. and the shell script should tell me if the passed argument is a variable
something like this
if [ ! -z ${$1} ] ; then
echo yes! $1 is a variable and its value is ${$1}
fi
but this gives me bad substitution err..
I definitely know i'm missing something.. help me out!
Eg usage:
$ myscript.sh HOME
yes! HOME is a variable and its value is /home/raj
Upvotes: 4
Views: 238
Reputation: 3691
Found it here: http://www.linuxquestions.org/questions/programming-9/bash-how-to-get-variable-name-from-variable-274718/
All you should do:
if [ ! -z ${!1} ]; then
echo yes $1 is a variable and its value is ${!1}
fi
Upvotes: 1
Reputation: 206689
The syntax for this is:
${!VAR}
Example:
$ function hello() { echo ${!1}; }
$ hello HOME
/home/me
Upvotes: 4