DOS格式和Unix格式是两种不同的文本文件格式,它们在行结束符(line ending)上有显著的区别。这些差异源于不同的操作系统历史和设计哲学。
DOS格式文本文件使用特定的字符序列来表示行结束。在DOS、Windows以及许多其他早期的操作系统(如CP/M)中,行结束符由两个字符组成:回车(Carriage Return, CR)和换行(Line Feed, LF)。在ASCII编码中,回车对应的字符是\r(十进制值为13),换行对应的字符是\n(十进制值为10)。因此,DOS格式的行结束符通常表示为\r\n。
特点:
Unix格式的文本文件使用单一的换行(Line Feed, LF)字符来表示行结束。这种格式更为简洁,是Unix、Linux以及较新的Mac OS版本(从Mac OS X开始)的标准行结束方式。
特点:
Windows下编辑的脚本,上传Linux环境执行。
[root@test ~]# ./cleanup-backup.sh
-bash: ./cleanup-backup.sh: /bin/bash^M: bad interpreter: No such file or directory
[root@test ~]# ./myScript.sh
./myScript.sh: line 41: syntax error: unexpected end of file
[root@test ~]# vim cleanup-backup.sh
(1)用 :set ff 可查看文件格式
回车可以看到
(2)用 :set ff=unix 可设置文件格式为unix
回车可以看到
[root@test ~]# yum -y install dos2unix
[root@test ~]# dos2unix cleanup-backup.sh
dos2unix: converting file cleanup-backup.sh to Unix format ...
# 命令有输出则是有语法错误
[root@test ~]# sh -n myScript.sh
注:用"-n" 选项只会读取shell脚本,用于测试shell脚本是否存在语法错误,但不会实际执行脚本。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。