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