我有一个荒谬的问题,由于一个荒谬的问题。通常,如果我想在UNIXshell中获取环境变量的内容,我可以这样做
echo ${VAR}
假设,由于我的荒谬处境,这是不可能的。如何将环境变量的内容发送到stdout,而不需要有人查看命令本身(而不是输出),查看环境变量的值?我可以想象解决方案是类似echo env(NAME_OF_VAR)的东西,尽管我似乎找不到它。解决方案必须在sh中工作。
echo env(NAME_OF_VAR)
PS我不能为此编写脚本,它必须是一个内置的Unix命令(我知道,荒谬的问题)。
70gysomp1#
您可以:printenv VARIABLE_NAME
printenv VARIABLE_NAME
7ivaypg92#
在终端中输入以下命令,它将显示所有环境变量的列表
printenv
现在像这样打印想要的变量:
echo $VARIABLENAME
taor4pac3#
使用${!VAR_NAME}应该是您正在寻找的
${!VAR_NAME}
> FOO=BAR123 > VAR_NAME=FOO > echo ${VAR_NAME} FOO > echo ${!VAR_NAME} BAR123
fzsnzjdm4#
你的意思是这样的:
ENV() { printf 'echo $%s\n' $1 | sh }
这在普通的老伯恩shell中工作。
ukdjmx9f5#
不如这样:
myVariable=$(env | grep VARIABLE_NAME | grep -oe '[^=]*$');
pgvzfuti6#
解决方案实际上取决于限制是什么,为什么不能使用简单的$VAR。也许你可以调用一个没有限制的shell,让这个子shell计算变量:
$VAR
bash -c 'echo $VAR'
dgsult0t7#
( set -o posix ; set ) | grep $var
搜索所有unix-兼容的格式变量被使用
7条答案
按热度按时间70gysomp1#
您可以:
printenv VARIABLE_NAME
7ivaypg92#
在终端中输入以下命令,它将显示所有环境变量的列表
printenv
现在像这样打印想要的变量:
echo $VARIABLENAME
taor4pac3#
使用
${!VAR_NAME}
应该是您正在寻找的fzsnzjdm4#
你的意思是这样的:
这在普通的老伯恩shell中工作。
ukdjmx9f5#
不如这样:
pgvzfuti6#
解决方案实际上取决于限制是什么,为什么不能使用简单的
$VAR
。也许你可以调用一个没有限制的shell,让这个子shell计算变量:dgsult0t7#
搜索所有unix-兼容的格式变量被使用