2010-03-19 135 views
27

我有一个荒谬的问题,由于一个荒谬的问题。UNIX,得到环境变量

一般来说,如果我想在UNIX外壳的环境变量的内容,我可以做

echo ${VAR} 

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

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

我可以想像解决方案是echo env(NAME_OF_VAR),虽然我似乎无法找到它。解决方案必须在sh中工作。

PS我不能写这个剧本,它必须是一个内置的UNIX命令(我知道,可笑的问题)

感谢(和抱歉的荒诞)

+11

Mike,你没事吧?在某个仓库里,你是否被黑手党枪对着你的头部?这是请求帮助吗? – 2010-03-19 13:49:28

+0

什么问题? “{”不可见/不可访问的键盘? – 2010-03-19 13:58:37

+1

@Tim ..我的情况几乎是那么糟糕。但现在,我很好 – Mike 2010-03-19 13:59:54

回答

39

printenv VARIABLE_NAME

+0

噢,/ usr/ucb以外的东西。令人印象深刻。 – pra 2010-03-19 22:28:06

2

如何:

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

实际上你最好使用最后的切割,例如... | cut -d'='-f2- – 2010-03-19 13:37:30

4

你的意思是这样的:

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

这工作我n普通的旧Bourne壳。

+0

我会多引用一下自己:'ENV(){printf'printf'%% s \\ n“”$ {%s}“\ n'”$ 1“| SH; }' – 2010-03-19 16:26:02

1

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

bash -c 'echo $VAR' 
4

型终端下面的命令,它会显示环境变量的所有列表

printenv

现在打印所需的变量是这样的:

回声$ VARIABLENAME

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

在StackOverflow上不鼓励使用代码解决问题。请尽量详细说明为什么这是一个正确的答案 – Mittal 2018-02-13 04:34:58

+0

永远记住要将解释添加到您发布的答案中,以便用户可以了解其用法。 @ user3061097 – LuFFy 2018-02-13 06:41:30