bash读写具有异常布局的配置文件

时间:2019-03-19 01:26:31

标签: bash key config key-value quotation-marks

问题1 我有一个程序编写的配置文件,我想通过在终端中运行脚本来覆盖这些值。

配置文件的布局是这样的(可能有这种格式的名称,但我不知道它是什么):

name_1 = "value1"
name_2 = "value2"
...

当我尝试读取脚本文件中的值时,我相信每个空格都会引起问题,因为每个名称都出现错误“找不到命令”。

反正我可以在bash脚本中包含此文件,以便它理解每一行都是变量吗?

问题2 如何用相同的格式覆盖该文件中单行的值?配置文件中的引号以及=符号前后的空格使我感到困惑。

以下工作吗?

CONFIG_FILE=test.cfg
TARGET_KEY=$"name_1 "
REPLACEMENT_VALUE=" "true" "
sed -i "s/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/" $CONFIG_FILE

1 个答案:

答案 0 :(得分:0)

对于第一个问题,请先对您的.cfg文件进行预处理,然后再进行读取,如下所示:

CONFIG_FILE=test.cfg
sed 's/ = /=/g' < test.cfg > /tmp/processed.cfg
. /tmp/processed.cfg

现在,您的所有name_1name_2对都可用于您的Shell脚本。

对于第二个问题,请按照以下步骤操作:

CONFIG_FILE=test.cfg
TARGET_KEY='name_1 '
REPLACEMENT_VALUE='"true" '
sed -i -e "s/\($TARGET_KEY *= *\).*/\1$REPLACEMENT_VALUE/" $CONFIG_FILE