I have a ridiculous question due to a ridiculous problem.
Normally if I want to get the contents of an environment variable in UNIX shell, I can do
echo ${VAR}
Let's assume, due to my ridiculous situation, that this isn't possible.
How do I get the contents of an environment variable to stdout, without someone who is looking at the command itself (not the output), see the value of the environment variable.
I can picture the solution being something like echo env(NAME_OF_VAR)
although I can't seem to find it. The solution has to work in sh.
PS I can't write a script for this, it must be a built in unix command (i know, ridiculous problem)
Thanks (and sorry for the absurdity)
type the following command in terminal, it will display all the list of environment variables
printenv
now print the wanted variable like this:
echo $VARIABLENAME
Do you mean something like this:
ENV() {
printf 'echo $%s\n' $1 | sh
}
This works in plain old Bourne shell.
How about this:
myVariable=$(env | grep VARIABLE_NAME | grep -oe '[^=]*$');
The solution really depends on what the restrictions are why you can't use a simple $VAR
. Maybe you could call a shell that doesn't have the restrictions and let this sub-shell evaluate the variable:
bash -c 'echo $VAR'
Using ${!VAR_NAME}
should be what you are looking for
> FOO=BAR123
> VAR_NAME=FOO
> echo ${VAR_NAME}
FOO
> echo ${!VAR_NAME}
BAR123
( set -o posix ; set ) | grep $var
search for all unix-compatible format variables been used