linux和windows換行符的^M問題
阿新 • • 發佈:2019-01-01
起源
在windows中寫的指令碼執行完全沒問題,程式碼一模一樣,切換到linux中執行報錯。利用命令 “vi/vim -b 檔名”檢視檔案發現每行結尾多了“^M”這樣的結尾。
根源
通過查詢得知,其問題根源是windows和linux換行符不同造成,二者區別如下表(外加了mac book)
windows | linux | MacBook | |
換行符 | \r\n | \n | \r |
ASCII | 0x0d0a | 0x0a | 0x0d |
其中:
- "\r"在ASCII中表示“換行(LF)”
- "\n"在ASCII中表示“回車(CR)”
解決
注:主要在linux中解決由於檔案結尾產生的錯誤
1、確認程式碼無誤
2、利用命令“vi -b [filename] ”檢視結尾是否多了“^M”
3、檔案格式轉換
- 方式一:dos2unix
- 下載並安裝dos2unix
- 利用命令“dos2unix [filename]”完成轉換
- 方式二:替換(vim+正則表示式)
- 利用命令“vim -b [filename]”開啟該檔案
- 在命令模式下輸入:“%s/^M//g”或者“g/\^M/s/\^M//”
- 儲存並退出
注意:方式二中“^M”的輸入方式:ctrl+v+m