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)
You can do:
printenv VARIABLE_NAME
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
Using ${!VAR_NAME}
should be what you are looking for
> FOO=BAR123
> VAR_NAME=FOO
> echo ${VAR_NAME}
FOO
> echo ${!VAR_NAME}
BAR123
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'
( set -o posix ; set ) | grep $var
search for all unix-compatible format variables been used
精彩评论