windows寫的shell腳本執行報錯的解決方法

今天學了個小技能,有必要推廣一下。
事情是這樣的,我經常需要去服務器執行一套更新重啓應用的操作,所以寫了個腳本。
但是腳本是在windows下寫的,放到linux上後,總是報錯,原因是每一行的後面多了\r或^m。
最終的原因是在windows下編輯的.sh文件的格式爲dos格式。而linux只能執行格式爲unix格式的腳本。因爲在dos/window下按一次回車鍵實際上輸入的是“回車(CR)”和“換行(LF)”,而Linux/unix下按一次回車鍵只輸入“換行(LF)”,所以修改的sh文件在每行都會多了一個CR,所以Linux下運行時就會報錯找不到命令。

在網上看到的解決方案,大都是用sed轉換,但是比較麻煩。
最終讓我發現了一個好方法:直接用vi/vim轉換文件格式。

  1. vi/vim 命令打開文件

  2. vi 命令模式中使用 :set ff 命令,可以看到改文件的格式爲fileformat=dos

  3. 修改文件 formatunix 使用 vi/vim 修改文件 format
    命令::set ff = unix
    或者::set fileformat = unix

  4. :wq 保存退出就可以了

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