用bash脚本中的变量替换字符串

伊扎丁·莫哈末伊萨

我想创建一个 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: unknown option to `s'

如何在配置文件中获取那些定义的变量?任何帮助将不胜感激

丁丁

您正在使用此 sed 模式s/FIND_STRING/REPLACE_STRING,这是执行此操作的常用方法。

但是您的REPLACE_STRINGcontains /,因此您的模式将变为s/FIND_STRING/jdbc:mysl://....无效,因为它包含太多/.

sed 接受任何字符作为字段分隔符,因此在您的情况下,您需要将 sed 模式字段分隔符从更改/为其他内容,例如|.

例子:

$ mysqlurlenv1="jdbc:mysl://xx.xx.xx.xx:3306"
$ echo "mysql.db.url = jdbc:mysql" | sed "s|^\(mysql.db.url =\).*|\1 ${mysqlurlenv1}|"
mysql.db.url = jdbc:mysl://xx.xx.xx.xx:3306

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用bash脚本在文件中用变量替换字符串

来自分类Dev

Bash脚本,无法用转义的$和&替换文件中的字符串

来自分类Dev

Bash脚本,无法用转义的$和&替换文件中的字符串

来自分类Dev

用bash中的ip地址替换json字符串中的变量

来自分类Dev

bash和sed:用for循环替换变量中的多个字符串

来自分类Dev

用变量中的字符串命令替换bash命令的行为

来自分类Dev

使用sed用bash变量替换双引号中的字符串

来自分类Dev

bash&sed:用for循环替换变量中的多个字符串

来自分类Dev

用变量中的字符串命令替换bash命令的行为

来自分类Dev

用脚本替换文件中的字符串

来自分类Dev

用Google脚本中的条件替换字符串

来自分类Dev

替换bash脚本中的字符串(MacOS)

来自分类Dev

在ruby bash脚本中替换字符串-Ruby

来自分类Dev

试图用“;”替换变量中的字符串

来自分类Dev

用值检测和替换字符串中的变量

来自分类Dev

用R中的字符串值替换变量

来自分类Dev

试图用“;”替换变量中的字符串

来自分类Dev

用sed脚本替换字符串

来自分类Dev

JSON字符串中的Bash变量替换

来自分类Dev

JSON字符串中的Bash变量替换

来自分类Dev

调用sed替换存储在bash变量中的字符串

来自分类Dev

Bash:用数组替换文件中的字符串

来自分类Dev

在bash脚本中编辑字符串变量

来自分类Dev

如何在 Bash 脚本中连接字符串变量

来自分类Dev

sed脚本用换行符替换字符串中的字符串“ \ n”

来自分类Dev

用变量替换字符串

来自分类Dev

sed用变量替换字符串?

来自分类Dev

Bash变量替换和字符串

来自分类Dev

用bash中的环境变量替换所有字符串正则表达式匹配项

Related 相关文章

热门标签

归档