linux下执行脚本 sh -x XXX.sh 调试中存在大量/r 的问题
后来才发现这个脚本是在windows环境下编写的,直接ftp拖到了linux服务器上。
vi下用 :set ff 查看文件的编码
今天调试一个脚本,每句结尾都有大量/r 换行字符。检验了很多次都没调试成功。 后来才发现这个脚本是在windows环境下编写的,直接ftp拖到了linux服务器上。 vi下用 :set ff 查看文件的编码格式,果然是dos的。 用:set ff=unix 将文件变为unix格式,就调试成功了。 备注点1 win和linux换行的区别: Unix体系里,每行结尾只有“”,即“\n”; Windows体系里面,每行结尾是“”,即“\n\r”。 一个直接结果是,Unix体系下的文件在Windows里打开的话,所有文字会变成一行; 而Windows里的文件在Unix下打开的话unix脚本,在每行的结尾可能会多出一个^M符号。 备注点2 文件格式转换的方式: 方法1: 在命令模式下:输入:%s/^M//g 然后,回车即可替换 注,其中”^M”的输入,分别是“Ctrl+v”、“Ctrl+M”键生成的 方法2: 使用vi打开文本文件 vi dos.txt 命令模式下输入 :set fileformat=unix :w 方法3: 使用sed 工具 sed ’s/^M//’ filename > tmp_filename 方法4: 既然window下的回车符多了‘\r’,那么当然通过删除‘\r’ ,也可以实现: tr -d ‘\r’ 方法5:(最常用的方法) $ dos2unix filename (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |