2012-03-04 22 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