3

我正在开发一个 bash 提示项目,该项目对您当前所在目录中的不同状态起作用。

我现在需要的是一种从当前目录加载迷你配置的方法,这很容易用. .params.conf.您偶然发现了一个包含 .params.conf 文件的目录。

从这样的文件中加载变量的最佳方法是什么?变量将主要处于真/假状态,因此我不会以任何方式解析它们以便可以执行它。

可能的解决方案:

  • 一个循环,加载每个预定义的变量是可能的,但我想保持代码可读。

  • 将整个文件放在 bash 数组中是最好的解决方案,但是我怎样才能像这样在 bash 中填充键/值字典呢?

  • 如果 bash 可以源文件只加载变量..

我还不知道 params.conf 文件的格式会是什么样子。但我认为最简单的方法是每个参数一行,用空格分隔。就像每行中的一个:key value that can have space in it.

4

2 回答 2

3

eval可能非常不安全,仍然可以执行恶意代码。最好使用declare

while read varname value
do
    declare "$varname=$value"
done < .params.conf
于 2012-05-13T13:17:31.823 回答
0

如果您的值不包含引号,则很容易:

while read varname value ; do
    eval $varname="'$value'"
done < .params.conf

如果变量内有引号,则必须更加小心并添加一些转义。

于 2012-05-13T13:06:25.203 回答