【发布时间】:2019-03-19 01:26:31
【问题描述】:
问题 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
【问题讨论】:
-
请避免把两个问题当作一个问题来问。
-
欢迎来到 SO!请阅读how-to-ask 并根据说明更正您的问题。
-
相关:How to parse and convert ini file into bash array variables? 为什么每个人都如此专注于让 bash 做它不太适合的事情?如今,到处都有 bash,也可能存在诸如 Python、Ruby 或 Perl 之类的高阶语言; Python 具有此内置功能(如链接中的一个答案所示),如果您不想使用包,则可以很容易地用另一种高级语言编写代码。
标签: bash key config key-value quotation-marks