【发布时间】:2017-07-18 08:50:09
【问题描述】:
我想创建一个 bash 脚本来更改应用程序的配置文件。该脚本将读取一个变量并将我想要更改的设置的值替换为变量值。
#!/bin/bash
mysqlurlenv1="jdbc:mysl://xx.xx.xx.xx:3306
mysqlurlenv2="jdbc:mysl://xx.xx.xx.xz:3306
configFile=app.conf
pattern=$1
case "$pattern" in
1)
sed -i.bak "s/^\(mysql.db.url =\).*/\1 ${mysqldburl_env1}/"
;;
2)
sed -i.bak "s/^\(mysql.db.url =\).*/\1 ${mysqldburl_env2}/"
;;
*)
echo "Wrong input...try again"
esac
我有一个包含以下条目的配置文件
mysql.db.driver = com.mysql.jdbc.Driver
mysql.db.url = jdbc:mysql....
mysql.db.uname = admin
当我运行脚本时出现此错误 sed: -e expression #1, char 40: `s' 的未知选项
如何在配置文件中获取那些定义的变量?任何帮助将不胜感激
Rgds 丁
【问题讨论】:
-
您不应该将 sed 与这样的扩展变量一起使用。您引用的变量有 / 被 sed 用作分隔符的引用,因此会出现 sed 错误。
-
前两个变量没有终止。