CentOS7运行.sh脚本提示syntax error: unexpected end of file的解决方法

2020-02-03 22:02:50王振洲

[root@bhz004 keepalived]# sh ./nginx_check.sh 
./nginx_check.sh: line 9: syntax error near unexpected token `fi'
./nginx_check.sh: line 9: `fi'
[root@bhz004 keepalived]#

上面两个问题都是由于.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。因为在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下按一次回车键只输入“换行(LF)”,所以修改的sh文件在每行都会多了一个CR,所以Linux下运行时就会报错找不到命令。
        我们可以查看该脚本文件的格式,方法是使用命令:vim nginx_check.sh进入编辑文件界面,如下图所示。

直接输入":",然后在":"之后输入"set ff"如下图所示


回车即可看到脚本格式,如下图所示,可以看到当前脚本格式是dos。


我们需要把格式改为unix,方法是输入":set ff=unix",也可以输入":set fileformat=unix"如下图所示。


输入完之后,回车即可完成切换格式。然后我们再输入":set ff"来查看格式,如下图所示,可以看到当前脚本格式变成了我们想要的"unix"了。


这时我们再执行nginx_check.sh就没问题了,如下所示。

[root@bhz004 keepalived]# sh ./nginx_check.sh 
[root@bhz004 keepalived]# ps -ef | grep nginx
root    3679   1 0 19:42 ?    00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody   3681  3679 0 19:42 ?    00:00:00 nginx: worker process   
root    3711  1898 0 20:23 pts/0  00:00:00 grep nginx
[root@bhz004 keepalived]#

这篇文章就介绍到这了,基本上就是注意编码问题与换行问题,不能用文本编辑器。