2012-03-04 81 views
4

我有一個Linux的配置文件與這樣的格式:如何在bash中獲取變量配置的值?

VARIABLE=5753 
VARIABLE2="" 
.... 

我怎麼會得到F.E. VARIABLE2使用標準的Linux工具或正則表達式的值? (我需要從文件解析目錄路徑)。提前致謝。

+0

也許我沒有得到這個,但你爲什麼不寫'echo $ VARIABLE2'? – 2012-03-04 09:23:38

+2

你不想收集整個文件? – Mat 2012-03-04 09:24:45

+0

已經將近3年了,所以我都不記得了,但我想我是爲了正確的答案而去的。 採購整個配置不是一個選項,我不會執行「。」在潛在的不可信/損壞的配置,所以我去了perl正則表達式匹配的東西,然後過濾額外的常規結果(在我的腳本中有一個可選的名稱爲tmpdir在變量中,我並不希望它是「〜」或「/」之後會導致「rm -r〜」。 – AoeAoe 2015-01-25 00:05:28

回答

4
$> cat ./text 
VARIABLE=5753 
VARIABLE2="" 

隨着perl正則表達式grep可以匹配使用回顧後操作這些值。

$> grep --only-matching --perl-regex "(?<=VARIABLE2\=).*" ./text 
"" 

而對於VARIABLE

$> grep --only-matching --perl-regex "(?<=VARIABLE\=).*" ./text 
5753 
+0

完美地工作,謝謝 – AoeAoe 2012-03-04 10:25:29

5
eval $(grep "^VARIABLE=" configfile) 

將選擇行並在當前bash上下文中評估它,設置變量值。完成此操作後,您將有一個名爲VARIABLE的變量,其值爲5753。如果配置文件中不存在這樣的行,則不會發生任何事情。

4

您可以使用source(又名.)命令將所有文件中的變量加載到當前shell:

$ source myfile.config 

現在您可以訪問文件中定義的變量的值:

$ echo $VARIABLE 
5753