当我使用window文本工具编写Unix的shell脚本并使用rz命令上传到Unix系统运行时总是报错"syntax error: unexpected end of file",后来才发现,window系统和Unix系统之间的编码方式是不同的。
以前的打字机换行分为两步:复位和走纸,但不同的操作系统中复位和走纸的表示方法不同。
以前的打字机换行分为两步:复位和走纸,但不同的操作系统中复位和走纸的表示方法不同。
于是,unix/mac下的文件如果在windows里打开,所有文字会变成一行;而windows的文件在unix/mac下打开,每行的结尾会多出一个 ^M 符号。
我想在linux下执行一个shell脚本,而它恰巧又在windows中打开过,于是我就狠狠地摔在了这个坑里。解决的办法自然很简单,一个dos2unix命令即可。
OS 表示 C语言/转义字符 HEX表示 Window 回车+换行符(CR/LF) \r\n 0x0d0a Unix/Linux 换行(LF) \n 0x0a Mac OS 回车(CR) \r 0x0d