初学shell编程的研发人员通常都会遇到这样的问题,在windows下编辑的shell脚本放到linux环境下比如手机中运行时就会出一些莫名其妙的错误,及时是一些非常简单的shell命令也会报错。其实错误的原因只有一个就是格式问题,在windows下编辑出的shell脚本格式为dos格式,而linux只能执行格式为unix格式的脚本。因为在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,即'\r\n',而Linux/unix下按一次回车键只输入“换行(LF)”,即'\n',所以修改的sh文件在每行都会多了一个CR,所以Linux下运行时就会报错找不到命令。
解决这个问题的方法有几种:
1.通过vi工具修改格式
在linux下通过vi打开该文件。在命令模式下使用set ff命令,可以看到该文件的格式为fileformat=dos,然后修改文件格式:set ff=unix,最后保存退出就可以了。
2.用fromdos命令转换
fromdos命令是ubuntu下进行dos格式文件转换成linux系统可以使用的文件格式的命令。
3.windows下很大编辑器本身也可以支持linux格式的文件编辑保存,不过默认并不是linux格式的,最简单的办法就是找一个已经是linux格式的shell脚本文件,在此基础上进行修改保存,这样保存之后仍然也是linux格式的。