【发布时间】:2015-05-17 14:51:34
【问题描述】:
我是 Bash 脚本的新手,我遇到了一些困难。我正在尝试更改配置文件的配置值。如果它找到一个现有值,我希望它更新它,但如果它不存在,我希望它附加它。这是我从各种教程和在线 sn-ps 中得到的:
# FUNCTION TO MODIFY CONFIG BY APPEND OR REPLACE
# $1 File
# $2 Find
# $3 Replace / Append
function replaceappend() {
grep -q '^$2' $1
sed -i 's/^$2.*/$3/' $1
echo '$3' >> $1
}
replaceappend "/etc/test.conf" "Port 20" "Port 10"
但是,正如您想象的那样,这行不通。似乎与它背后的逻辑有关,我不确定如何捕获 grep 的结果以便选择 sed 或 echo。
【问题讨论】:
-
变量不会在单引号字符串中展开。
-
获取grep命令的退出码。
-
@Gumbo 我应该将它们更改为双引号字符串吗?
-
类似但不密切相关的关于处理配置文件的帖子,请看这篇帖子:stackoverflow.com/a/20268787/234110
标签: bash shell security sed grep