SHELL脚本“SYNTAX ERROR:UNEXPECTED END OF FILE”解决方案

今天,自己在写一个一键安装http服务的脚本时,使用if语句编写,用bash -x 命令你给调试,都报错“SYNTAX ERROR:UNEXPECTED END OF FILE”,怎么改动都会报错,通过google,发现自己的错误了。

1、在最初脚本中是在windows下,使用sublime编辑器写。
将shell脚本传至linux中:使用命令bash -x SCRIPT 检查语法总是出一个错误 syntax error:unexpected end of file。

原因如下:

dos文件传输到unix系统时,会在每行的结尾多一个^M,在vim的时候,当你用如下命令查看:cat -A SCRIPT
示例:
[root@localhost~]#cat -A installhttp.sh

#!/bin/bash^M$
#The script is autoinstallhttp.sh^M$
#Author Joah^M$
#Version 1.0.0^M$
version=`grep -o " [0-9]\>" /etc/centos-release`^M$
if [ $version -eq 7 ];do^M$
echo "We will install newversion.Please wait!"^M$

2、解决方法
使用命令dos2unix命令将SCRIPT脚本格式

[root@localhost~]#dos2unix installhttp.sh 
dos2unix: converting file installhttp.sh to UNIX format ...

或者:
[root@localhost/app]#vim installhttp.sh
:set fileformat=unix
:wq
[root@localhost/app]#cat -A installhttp.sh

$
$
#/bin/bash$
#$
#The script is autoinstallhttp.sh$
#Author Joah$
#Version 1.0.0$
version=`grep -o " [0-9]\>" /etc/centos-release$
已标记关键词 清除标记
本课程详细讲解了以下内容:     1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程     2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例     3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题      4.session与cookie问题及application、cookie补充说明及四种范围对象作用域      5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别      6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据      7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)      8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析      9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)     1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)      11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet      12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题      13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove      14.过滤器、过滤器通配符、过滤器链、监听器      15.session绑定解绑、钝化活化      16.以及Ajax的各种应用      17. Idea环境下的Java Web开发
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页