2010-03-19 197 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