Gbase入库异常:sed: -e expression #1, char 29: unknown option to `s'

时间:2022-09-27 20:12:13

异常:用shell执行Gbase入库的脚本,一直报错,逐一排查问题

异常一:如标题        sed: -e expression #1, char 103: unknown option to `s'  

检查发现入库的脚本中有一个传入服务器密码的变量替换未成功,脚本中中有一句变量(变量为服务器密码)替换的命令为

sed -i "s#pwd#$pwd#g" dir/test.sql

发现密码中本身带有“#“(ahfih#3rjkjhJ)号,那么替换命令中的#符会报错,修改#为!

sed -i "s!pwd!$pwd!g" dir/test.sql

执行脚本替换成功,密码被正常替换到sql文件里

异常二:执行入库依然报错,提示连不上服务器,但是同样的脚本在其他服务器上是没问题的,所以

推测依然是密码中带#号的问题,因为#在shell中代表注释符,但是命令也是用''引用的,但是文件是.sql后缀的sql文件,可能写到sql文件里‘’没起作用,所以只能修改服务器密码了,改为(lkjfald%8238j),依然入库失败,但是异常代码变了

异常三:检查脚本依然没发现问题,只能一步步推测问题所在了,推测一:%号作为一个特殊符号,在sql文件里也可能阻碍了,sql文件的执行。继续修改服务器密码(fhkh!7nkfkdu)

入库成功!

所以建议大家入库的时候注意,.sql文件里慎用”#,%“等特殊符号。

个人观点,欢迎指正。

本人原创,转载请注明出处。