UNIX,获取环境变量

发布于 2024-08-25 14:19:43 字数 342 浏览 7 评论 0原文

由于一个荒谬的问题,我有一个荒谬的问题。

通常,如果我想在 UNIX shell 中获取环境变量的内容,我可以做

echo ${VAR}

让我们假设,由于我的荒谬情况,这是不可能的。

如何将环境变量的内容获取到标准输出,而无需查看命令本身(而不是输出)的人来查看环境变量的值?

我可以想象解决方案类似于 echo env(NAME_OF_VAR) 虽然我似乎找不到它。该解决方案必须在 sh 中工作。

PS 我无法为此编写脚本,它必须是内置的 Unix 命令(我知道,这是个可笑的问题)。

I have a ridiculous question due to a ridiculous problem.

Normally if I want to get the contents of an environment variable in a 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).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

同尘 2024-09-01 14:19:43

你可以这样做:

printenv VARIABLE_NAME

You can do:

printenv VARIABLE_NAME
计㈡愣 2024-09-01 14:19:43

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

printenv

现在打印所需的变量,如下所示:

echo $VARIABLENAME

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

坚持沉默 2024-09-01 14:19:43

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

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

Using ${!VAR_NAME} should be what you are looking for

> FOO=BAR123
> VAR_NAME=FOO
> echo ${VAR_NAME}
FOO
> echo ${!VAR_NAME}
BAR123
心欲静而疯不止 2024-09-01 14:19:43

这个怎么样:

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

How about this:

myVariable=$(env  | grep VARIABLE_NAME | grep -oe '[^=]*
);
墨落成白 2024-09-01 14:19:43

你的意思是这样的吗:

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

这适用于普通的旧 Bourne shell。

Do you mean something like this:

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

This works in plain old Bourne shell.

听闻余生 2024-09-01 14:19:43

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

bash -c 'echo $VAR'

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'
深陷 2024-09-01 14:19:43
( set -o posix ; set ) | grep $var

搜索所有已使用的 UNIX 兼容格式变量

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

search for all unix-compatible format variables been used

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文