【问题标题】:Portability Bug between Windows and Unix of \r\n (CRLF) and \n (LF)?\r\n (CRLF) 和 \n (LF) 的 Windows 和 Unix 之间的可移植性错误?
【发布时间】:2015-03-10 15:33:34
【问题描述】:

当我在windows平台上为Shell Script编写代码时

#!/bin/bash
a=20
b=10
sum=`expr $a + $b`
echo $sum

但尝试在 UNIX 平台上执行它却给了我错误 '20\r': command not found,因为 Windows 文件以 /r/n 结尾,而 UNIX 文件以 /n 结尾。

知道如何删除和处理此类错误吗?

【问题讨论】:

    标签: windows unix portability line-endings


    【解决方案1】:

    使用dos2unix - “[a] 将 DOS/MAC 格式的纯文本文件转换为 UNIX 格式的程序” - 或类似的命令。

    Git 或 Hg 等存储库拥有 support for 'line ending normalization'。出于其他原因,使用版本控制系统也很棒!

    如果通过 [S]FTP/SCP(例如WinSCP)进行传输,请为传输指定“TEXT 模式”,转换将自动完成 - 换行符转码是作为复制/传输过程本身的一部分完成的。

    许多“高级”文本编辑器(例如 [x]emacs、[g]vim、sublime、notepad++ 甚至 Visual Studio)也可以修复/规范化此类文件。这些编辑器也可用于从头开始编写文件:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-08
      • 2011-08-11
      • 2015-04-23
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多