有时在Windows下编写好一个脚本,复制到Linux里不能正常运行,表面上也看不出脚本的语法问题,但就是不能正常运行;有时Linux下的某个脚本本来可以正常运行,可是从Windows的某处(从文件或邮件里)复制了几句命令,粘贴到Linux的这个脚本里,保存后,这个脚本也变得不能正常运行。出现这两种情况(实际上是一种情况:Linux中的脚本包含了来自Windows的内容)的基本原因是两种系统的文件格式不同。
例如,在Windows下用记事本编辑好如下脚本,并传到了Linux里(为保证传入Linux的过程中,文件的格式不变,可以先在Windows下将脚本压缩为.zip文件,传入Linux后再用unzip命令解压缩):
用chmod+x命令增加其执行权限之后,发现脚本不能运行:
在Windows下,文件的换行符为\r\n,而在Linux下,它是\n。这个差异造成了脚本错误。当一个Linux下的文件包含了来自Windows的内容,或者这个文件就来自Windows,用命令dos2unix<文件名>转换其格式,文件格式差异的问题就解决了。例如,转换格式后,脚本from_win.sh就可以正常执行了:(www.xing528.com)
如果读者感兴趣,可以用命令ls-l查看格式转换前后脚本的大小,可以发现字节数不同。
同样,如果Linux下的某个文件要复制到Windows下使用,最好先执行命令unix2dos〈文件名〉,然后再将该文件复制到Windows,会避免潜在的麻烦。
为进一步理解上面的内容(或者,如果没有成功看到上面的现象的话),也可以在Linux下找一个原本能够正常运行的脚本,用命令unix2dos〈脚本名〉改变其格式,再执行脚本试试,然后用命令ls-l查看格式转换前后脚本的字节数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。