我有一个Linux的配置文件与这样的格式:如何在bash中获取变量配置的值?
VARIABLE=5753
VARIABLE2=""
....
我怎么会得到F.E. VARIABLE2使用标准的Linux工具或正则表达式的值? (我需要从文件解析目录路径)。提前致谢。
我有一个Linux的配置文件与这样的格式:如何在bash中获取变量配置的值?
VARIABLE=5753
VARIABLE2=""
....
我怎么会得到F.E. VARIABLE2使用标准的Linux工具或正则表达式的值? (我需要从文件解析目录路径)。提前致谢。
$> cat ./text
VARIABLE=5753
VARIABLE2=""
随着perl
正则表达式grep
可以匹配使用回顾后操作这些值。
$> grep --only-matching --perl-regex "(?<=VARIABLE2\=).*" ./text
""
而对于VARIABLE
:
$> grep --only-matching --perl-regex "(?<=VARIABLE\=).*" ./text
5753
完美地工作,谢谢 – AoeAoe 2012-03-04 10:25:29
eval $(grep "^VARIABLE=" configfile)
将选择行并在当前bash上下文中评估它,设置变量值。完成此操作后,您将有一个名为VARIABLE
的变量,其值为5753
。如果配置文件中不存在这样的行,则不会发生任何事情。
您可以使用source
(又名.
)命令将所有文件中的变量加载到当前shell:
$ source myfile.config
现在您可以访问文件中定义的变量的值:
$ echo $VARIABLE
5753
也许我没有得到这个,但你为什么不写'echo $ VARIABLE2'? – 2012-03-04 09:23:38
你不想收集整个文件? – Mat 2012-03-04 09:24:45
已经将近3年了,所以我都不记得了,但我想我是为了正确的答案而去的。 采购整个配置不是一个选项,我不会执行“。”在潜在的不可信/损坏的配置,所以我去了perl正则表达式匹配的东西,然后过滤额外的常规结果(在我的脚本中有一个可选的名称为tmpdir在变量中,我并不希望它是“〜”或“/”之后会导致“rm -r〜”。 – AoeAoe 2015-01-25 00:05:28