windows打包指令碼出現 /bin/sh^M: 壞的直譯器: 沒有那個檔案或目錄 錯誤

七星6609發表於2021-01-16

1.錯誤描述

我在Windows 10 系統下打包dolphinscheduler,上傳到centos7解壓之後,執行指令碼報如下錯誤:

-bash: ./dolphinscheduler-daemon.sh: /bin/sh^M: 壞的直譯器: 沒有那個檔案或目錄

^M是什麼東東,為什麼會有^M

通過命令 cat -A filename 檢視

 

 好像每行都有這個,應該和換行符有關,查了一下確實有關

2.錯誤原因

這個問題大多數是因為指令碼檔案在windows下編輯過。在windows下,每一行的結尾是\n\r,而在linux下檔案的結尾是\n,那麼你在windows下編輯過的檔案在linux下開啟看的時候每一行的結尾就會多出來一個字元\r,用cat -A fileName時你可以看到這個\r字元被顯示為^M,這時候只需要刪除這個字元就可以了

3.解決方式

使用指令sed -i 's/\r$//' test.sh,上面的指令會把  test.sh 中的\r 替換成空白!

 

相關文章