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 替換成空白!