写一个修改文件中配置信息的脚本,执行错误

发布于 2022-09-05 03:40:02 字数 703 浏览 20 评论 0

主要有三个文件 test.cnf test.sh test.txt
执行test.sh去读取test.cnf的配置来修改test.txt的内容,执行过程中读取配置成功但sed执行的时候没找到。
sed这里只是调试没去修改test.txt,只是显示test.txt的结果

[root@localhost /tmp]# head -100 test*
==> test.cnf <==
yy=123
ppp=456

==> test.sh <==
function myconf(){

source test.cnf
awk -F'=' '{print $1}' test.cnf|while read myline;do sed s/{{$myline}}/${$myline}/g test.txt;done
}
myconf

==> test.txt <==
uuu={{yy}}
ooo={{ppp}}

调试的时候就显示执行错误;

[root@localhost /tmp]# bash -x test.sh
+ myconf
+ source test.cnf
++ yy=123
++ ppp=456
+ read myline
+ awk -F= '{print $1}' test.cnf
test.sh: line 4: s/{{$myline}}/${$myline}/g: bad substitution

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆夏时光 2022-09-12 03:40:02
 while read a b;do sed -n "s/$a/$b/p" test.txt;done < <(awk -F= '{print $1,$2}' test.cnf)

图片描述

其它方法:

awk -F= -vOFS='=' 'NR==FNR{a[$1]=$2;next}{for(i in a)if($2 ~ i)sub(i,a[i],$2)}1' test.cnf test.txt
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文