异常:用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文件里慎用”#,%“等特殊符号。
个人观点,欢迎指正。
本人原创,转载请注明出处。