今天學了個小技能,有必要推廣一下。
事情是這樣的,我經常需要去服務器執行一套更新重啓應用的操作,所以寫了個腳本。
但是腳本是在windows下寫的,放到linux上後,總是報錯,原因是每一行的後面多了\r或^m。
最終的原因是在windows下編輯的.sh文件的格式爲dos格式。而linux只能執行格式爲unix格式的腳本。因爲在dos/window下按一次回車鍵實際上輸入的是“回車(CR)”和“換行(LF)”,而Linux/unix下按一次回車鍵只輸入“換行(LF)”,所以修改的sh文件在每行都會多了一個CR,所以Linux下運行時就會報錯找不到命令。
在網上看到的解決方案,大都是用sed轉換,但是比較麻煩。
最終讓我發現了一個好方法:直接用vi/vim轉換文件格式。
-
用
vi/vim
命令打開文件 -
在
vi
命令模式中使用:set ff
命令,可以看到改文件的格式爲fileformat=dos
-
修改文件
format
爲unix
使用vi/vim
修改文件format
命令::set ff = unix
或者::set fileformat = unix
-
:wq
保存退出就可以了