起源
在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)”
解決
sh文件本身有Windows的換行符,去掉就行了
注:主要在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