从文件中打印环境变量的值
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
,我必须获取相应的值。
现在我只尝试了文件的第一个值。
env | grep $(cat file | awk 'NR==1{print }')
--什么都不显示
b=$(cat file | awk 'NR==1{print }')
env | grep echo $b
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
如果您要在 env
和 printenv
的输出中查找名为 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
问题描述
在我的 Unix ksh 系统中,我有一个环境变量 A 正在做
echo ${A}
我得到了想要的值,即 hello
。
我可以在
中检查这个值env | grep ${A}
输出:A=hello
或在
printenv | grep ${A}
输出:A=hello
现在我有一个包含环境变量列表的文件file
,我必须获取相应的值。
现在我只尝试了文件的第一个值。
env | grep $(cat file | awk 'NR==1{print }')
--什么都不显示b=$(cat file | awk 'NR==1{print }')
env | grep echo $b
b=cat TEMP_ES_HOST_MAP | awk -F"|" 'NR==1{print }'
echo $b
c=
eval $becho $b
似乎没有任何效果。
谢谢
您可以使用 xargs
:
awk -F '[$()]+' '{print }' envfile | xargs printenv
其中:
cat envfile
$(LANG)
$LINES
USER
HISTFILESIZE
如果您要在 env
和 printenv
的输出中查找名为 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