test.sh: line 3: $‘\r‘: command not found 或者 vim去掉^M字元

Answerlzd發表於2020-12-05

這兩種現象其實對應同一種問題:在windows下編輯的檔案放到linux上執行時會出現這個問題。

例如,有一個test.sh檔案,通過vim直接開啟時看到的是這樣的:

發現並沒有什麼問題。其實應該通過vim -b test.sh開啟,這樣看到的就是本來面目了。

vim -b test.sh

所以

方法一、把^M刪掉就可以了。按i進入編輯模式,刪除即可。

               如果^M太多,可以使用查詢替換命令,vim開啟檔案然後

:%s/^M//g

注意這個^M不是看到的^M,而是要ctrl+V,ctrl+M敲出來。 

方法二、修改檔案的格式:set ff=unix

擴充套件知識:

在DOS/Windows 的文字檔案在每一行末尾有一個 CR(回車)和 LF(換行),而 UNIX 文字只有一個換行,即win每行結尾為\r\n,而linux只有一個\n
如果win下的文件上傳到linux,每行的結尾就會出現一個^M,(^M是ctrl+v,ctrl+m)

所以要麼去除這個\r要麼修改檔案格式。

 

 

 

相關文章