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

異常:用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文件裏慎用”#,%“等特殊符號。

個人觀點,歡迎指正。

本人原創,轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章