linux和windows换行符的^M问题

起源

在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

猜你喜欢

转载自www.cnblogs.com/chbo/p/10205973.html
今日推荐