由于一个荒谬的问题,我有一个荒谬的问题。
通常,如果我想在UNIX shell中获取环境变量的内容,我可以
echo ${VAR}
由于我的荒谬情况,让我们假设这是不可能的。
如何在没有查看命令本身(而不是输出)的人的情况下将环境变量的内容获取到stdout,请参阅环境变量的值。
我可以想象解决方案类似于echo env(NAME_OF_VAR)
,虽然我似乎无法找到它。解决方案必须在sh。
PS我不能为此编写脚本,它必须是内置的unix命令(我知道,荒谬的问题)
谢谢(抱歉荒谬)
答案 0 :(得分:56)
你可以这样做:
printenv VARIABLE_NAME
答案 1 :(得分:6)
在终端中键入以下命令,它将显示所有环境变量列表
<强> printenv 强>
现在打印想要的变量:
echo $ VARIABLENAME
答案 2 :(得分:4)
你的意思是这样的:
ENV() {
printf 'echo $%s\n' $1 | sh
}
这适用于普通的旧Bourne shell。
答案 3 :(得分:3)
使用${!VAR_NAME}
应该是您正在寻找的
> FOO=BAR123
> VAR_NAME=FOO
> echo ${VAR_NAME}
FOO
> echo ${!VAR_NAME}
BAR123
答案 4 :(得分:2)
这个怎么样:
myVariable=$(env | grep VARIABLE_NAME | grep -oe '[^=]*$');
答案 5 :(得分:1)
解决方案实际上取决于您不能使用简单$VAR
的限制。也许你可以调用一个没有限制的shell,并让这个子shell评估变量:
bash -c 'echo $VAR'
答案 6 :(得分:0)
( set -o posix ; set ) | grep $var
搜索已使用的所有与unix兼容的格式变量