![使用 sed 更改 sql 脚本中的路径](https://linux22.com/image/55548/%E4%BD%BF%E7%94%A8%20sed%20%E6%9B%B4%E6%94%B9%20sql%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E7%9A%84%E8%B7%AF%E5%BE%84.png)
我正在尝试从 bash 脚本更改 oracle sql 脚本中的路径。
read -e -p "Enter the ORACLE SID: " -i "orcl" ORACLE_SID_VALUE
sed -i "DEFINE tsdir = '/u02/app/oracle/oradata/orcl';/c\DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'" schema-install.sql
当我执行脚本时,出现以下错误: sed: -e 表达式 #1, 字符 2: 命令后的额外字符
谁能帮我使用正确的 sed 命令。
更多信息
只是为了澄清:在文件 schema-install.sql 中,有一行定义了 Oracle 数据库的存储位置。
DEFINE tsdir = '/u02/app/oracle/oradata/orcl';
我想改变这个值奥尔克到我输入变量 ORACLE_SID_VALUE 的值。
答案1
我会尝试:
sed -i -e "/DEFINE tsdir = /c\
DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'
" schema-install.sql
sed
被路径定义中的 / 混淆。
答案2
据我从你的问题中了解到,你正在尝试替换
DEFINE tsdir = '/u02/app/oracle/oradata/orcl'
经过
DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'
如果这是您想要做的,您可以使用以下方法来实现
sed -i "s#DEFINE tsdir = '/u02/app/oracle/oradata/orcl'#DEFINE tsdir = '/u02/app/oracle/oradata/${ORACLE_SID_VALUE}'#" schema-install.sql