我需要使用 shell 脚本在 Linux 中管理一个配置文件,该脚本将在文件中读取和写入设置cfg。我有以下功能可以在我的脚本中使用的现有配置文件中编写一个新value的。key
set_setting() {
sed -i "s/$1=[^ ]*/$1=$2/" $3
}
用法:
set_setting keyname NewValue /home/Config.cfg
因此,这将替换keynamein Config.cfgto的值NewValue。
我还有一个get_setting使用source命令读取配置文件的功能。它同样接受两个参数keyname和源配置文件,并返回value提供的密钥。
现在的问题是,我有如下配置文件。
name=Abc
surname=Xyz
当我调用set_setting函数 as时set_setting name Def /home/Config.cfg,理想情况下它应该将namefrom的值更改Abc为Def,但随着 keyname的值的更改,它也会更改surnamefrom的值,Xyz从而Def导致配置文件中的以下内容。
name=Def
surname=Def
我怀疑这是因为在两个键中都有术语“名称”,因为当我将键更改为 时surname,surnames它按预期工作,只有值name被更改。另请注意,键的值可以是除空格之外的任何值。
我是 shell 脚本的新手,也是最近发现的sed命令。