换行 bug

今天同事求助调试一段 bash 脚本。脚本甚是简单,只有十余行,但是执行起来却是莫名其妙的错误。

bash --debug ./xxx.sh 调试之,竟然两处空行有错误。

以十六进制查看源码,空行处见 0d0a。遂于同事 UE 中(同事惯于 windows UE 编写,putty 调试运行)点选菜单,将 CRLF 统换成 LF。竟然问题依旧。

我自然是 UE 新人。同事又操作一遍 CRLF -> LF,运行,依旧。

此时以十六进制再看源码,空行处竟有 0a0d0a 这等混乱不堪。

祭起 emacs,paste 源码到新文件,执行,无误。

CRLF vs LF 已是老生常谈,调试此 bug 前后也只十余分钟。只是不知用 UE 是如何造出 0a0d0a 这等换行符了,阿弥陀佛。

评论