.xxx.sh腳本沒法啓動,原來都是特殊字符搞的鬼?

今天遇到個趣的問題,linux上springboot啓動,鏈接達夢數據庫報錯。
解決思路:
1)是否是數據庫自己有問題,客戶端登陸沒問題。linux

2)排查是否是war包問題,本地鏈接數據庫,沒問題。算法

3)是否是啓動參數有問題?由於多數據源的關係,在啓動參數裏配置了數據源跟驅動名
--spring.datasource.url=jdbc:dm://172.31.98.190:5236/DMSERVER --spring.datasource.driverClassName=dm.jdbc.driver.DmDriver 檢查了下,沒任何問題。spring

4)是否是有特殊字符?
用vi -b start.sh查看了啓動腳本,並未發現^M這樣的特殊字符。
劃重點,這個也是常常出現的特殊字符致使腳本沒法啓動的元兇之一。數據庫

5)去除啓動參數,將啓動參數寫死放到application.properties中,從新打包,上傳上去,./start.sh,啓動居然不報錯了。windows

6)回頭再檢查這兩行參數,將參數逐行刪除,再手動打上去,定位到參數行
--spring.datasource.driverClassName=dm.jdbc.driver.DmDriver 將DmDriver 後的空格刪除,再從新手動打個空格,:wq保存,重啓啓動,成功。springboot

7)爲何?中午吃飯去了,下午回來再看。路上懷疑是隱藏字符。app

8)下午回來,按照隱藏字符的思路去百度了下,看還有什麼方法能夠查看linux上的隱藏字符。找到了個命令,cat -A。
cat -A start.sh運維

發現信息以下
--spring.datasource.url=jdbc:dm://172.31.98.190:5236/DMSERVERM-BM- $
--spring.datasource.driverClassName=dm.jdbc.driver.DmDriverM-BM- $url

多了M-BM-這串特殊字符,真相大白。io

9)M-BM-是什麼特殊字符?哪位大神能告訴我下?我關鍵字只搜索到了BM算法,這是一個查找替換算法,另外還搜到了個帖子,說放在oneNote裏再貼出來也出現這個問題。因此猜想是運維人員在windows上批量替換數據庫參數致使。

10)在window上編輯sh腳本的時候,上傳到linux上最好vi -b、cat -A先看下是否是弄了些特殊字符出來。

相關文章
相關標籤/搜索