关于shell脚本在win或linux环境下字符问题

前言

虽然一直都知道在windows上写脚本有这个问题,但是天真的我以为用sublime能自动给我解决。事实证明并不是这样的。还是得靠手动。

正文

这两天要测试lnmp环境,然后掏出我以前写好了lnmp脚本来运行一遍,然后就出现了如下bug。

lnmp_new.sh: line 5:
: command not found
lnmp_new.sh: line 6:
command not found
lnmp_new.sh: line 7: syntax error near unexpected token `{

lnmp_new.sh: line 7: `function checkos(){

刚开始还一脸懵逼,还以为是function出问题了。经过和大佬的谈论并修改function的书写方式都无果之后,就打着试试的方式在vim编辑器下输入[mark]:set ff=unix[/mark],然后再运行,特么的简直健步如飞,一路绿灯的完成了。

解释一下:

当在Linux下写好一个脚本之后保存在windows上,在Windows上修改以后再传到Linux上,可能脚本就不能执行了。 出现这种错误的原因是因为:CR/LF问题,在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下按一次回车键只输入“换行(LF)”,所以修改的sh文件在每行都会多了一个CR,所以Linux下运行时就会报错找不到命令。 于是来记录一下此次乌龙事件。