UNIX,获取环境变量

wi3ka0sx  于 2023-05-28  发布在  Unix
关注(0)|答案(7)|浏览(231)

我有一个荒谬的问题,由于一个荒谬的问题。
通常,如果我想在UNIXshell中获取环境变量的内容,我可以这样做

echo ${VAR}

假设,由于我的荒谬处境,这是不可能的。
如何将环境变量的内容发送到stdout,而不需要有人查看命令本身(而不是输出),查看环境变量的值?
我可以想象解决方案是类似echo env(NAME_OF_VAR)的东西,尽管我似乎找不到它。解决方案必须在sh中工作。

PS我不能为此编写脚本,它必须是一个内置的Unix命令(我知道,荒谬的问题)。

70gysomp

70gysomp1#

您可以:
printenv VARIABLE_NAME

7ivaypg9

7ivaypg92#

在终端中输入以下命令,它将显示所有环境变量的列表

printenv

现在像这样打印想要的变量:

echo $VARIABLENAME

taor4pac

taor4pac3#

使用${!VAR_NAME}应该是您正在寻找的

> FOO=BAR123
> VAR_NAME=FOO
> echo ${VAR_NAME}
FOO
> echo ${!VAR_NAME}
BAR123
fzsnzjdm

fzsnzjdm4#

你的意思是这样的:

ENV() {
    printf 'echo $%s\n' $1 | sh
}

这在普通的老伯恩shell中工作。

ukdjmx9f

ukdjmx9f5#

不如这样:

myVariable=$(env  | grep VARIABLE_NAME | grep -oe '[^=]*$');
pgvzfuti

pgvzfuti6#

解决方案实际上取决于限制是什么,为什么不能使用简单的$VAR。也许你可以调用一个没有限制的shell,让这个子shell计算变量:

bash -c 'echo $VAR'
dgsult0t

dgsult0t7#

( set -o posix ; set ) | grep $var

搜索所有unix-兼容的格式变量被使用

相关问题