从文件中打印环境变量的值

print value of environment variable from a file

问题描述

在我的 Unix ksh 系统中,我有一个环境变量 A 正在做

echo ${A}

我得到了想要的值,即 hello

我可以在

中检查这个值

env | grep ${A}

输出:A=hello

或在

printenv | grep ${A}

输出:A=hello

现在我有一个包含环境变量列表的文件file,我必须获取相应的值。

现在我只尝试了文件的第一个值。

  1. env | grep $(cat file | awk 'NR==1{print }') --什么都不显示

  2. b=$(cat file | awk 'NR==1{print }')

    env | grep echo $b

  3. b=cat TEMP_ES_HOST_MAP | awk -F"|" 'NR==1{print }' echo $b c=eval $b c=echo $b

似乎没有任何效果。

谢谢

您可以使用 xargs:

awk -F '[$()]+' '{print }' envfile | xargs printenv

其中:

cat envfile
$(LANG)
$LINES
USER
HISTFILESIZE

如果您要在 envprintenv 的输出中查找名为 A 变量 ,则使用 grep ${A}是不正确的(并且 unsafe/does 不适用于超过一个词的变量)。

你想要的是:

env | grep ^A=
printenv | grep ^A=

假设您的文件如下所示:

VAR1
VAR2
OTHER_VAR

你想搜索那些你可以使用这样的东西(假设你有进程替换):

env | grep -f <(awk '{print "^"[=12=]"="}' varfile)

假设您没有流程替换(或者您更喜欢更简单的解决方案,我有),您可以这样做:

env | awk -F = 'NR==FNR{a[]++; next}  in a' varfile -

实际上这也应该有效并且更简单(假设 awk 带有 ENVIRON):

awk ' in ENVIRON {print "="ENVIRON[]}' varfile