当前环境下有一个setting.conf文件 其中的格式如下
# 数据库驱动类型 默认mysql 可选值: mysql/dm
DB_TYPE=mysql
# 数据库 浮动ip 网段保持一致
DB_HOST=10.77.0.28
# 数据库端口 主备保持一致
DB_PORT=8888
# 数据库超管密码
DB_ROOT_PWD=B1LiBIlI@1234
我在脚本中使用cat 和sed 命令将配置文件中的数据分发到不同的配置文件中来达到初始化配置文件的目的
目前有以下问题:
对于以下特殊字符的配置如果其中包含=号则会从中间截断
如:
PORT_BIMSERVER=edwgvrew=febwui4
期望值是edwgvrew=febwui4
而实际获取值是 edwgvrew
而且如果使用命令
sed -i "s/{PORT_BIMSERVER}/$PORT_BIMSERVER/g" ${INSTALL_PATH}/iam-docker/bim-compose/bim/conf/server.xml
PORT_BIMSERVER中如果包含"/"
的话则会报错
这里一个这种的方法是 使用,
代替分隔符,美中不足就是如果替换的内容包含所有的特殊字符
~!@#$%^&*():>?""{}的话就需要用转义符来转义了 \=
请问有什么好的实现吗
换成
cut
就好了这个也好处理,把
/
换成\/
就好了还有一个比较偏门的方法:
sed
能够用特殊的字符做分隔符,例如sed "s^["target^[replace^[g
,在控制台同时按下ctrl+v+3
。或者是
来源,stackoverflow: how-to-pass-a-variable-containing-slashes-to-sed。