shell入门的拦路虎:syntax error: unexpected end of file
之所以称作拦路虎,是因为这个问题困扰了一天。
决定开始学习shell,在windows上用虚拟机装好redhat linux,完成网络配置,能与我的windows交互了。其它也不需要配。
开始学习bash,每次测试代码都在windows下写好,然后传到linux上执行。
在学习到if 等流程控制的语法的时候,我遇见了第一个难题写的 if 的测试总是不正确:“if.sh: line 11: syntax error: unexpected end of file ”。
—————————————————————————-
这个问题解决方案如下:学shell还是用vi或vim吧!
—————————————————————————-
syntax error: unexpected end of file问题的解决办法
dos文件转换成 unix 文件格式
dos 格式 文件 传输到 unix 系统时 , 会在每行的结尾多一个 ^M , 当然也有可能看不到 , 但是在 vi 的时候 , 会在下面显示此文件的格式 , 比如 ”dos.txt” [dos] 120L, 2532C 字样 , 表示是一个 [dos] 格式文件 , 如果是 MAC 系统的 , 会显示 [MAC] , 因为文件格式的原因有时会导致我们的 unix 程序 , 或者 shell 程序出现错误 , 那么需要把这些 dos 文件格式转换成 unix 格式 , 方法是
vi dos.txt
:set fileformat=unix
:w
这样文件就转换成 unix 格式 文件了 ,一般在 windows 机器上编写好了文件传到 unix 下就可能会出现这样的情况 , 而一般我们使用ftp 命令, 常常会加上 bin 参数表示二进制传输, 可是试一下不加 bin 参数 , 可能传到 unix 下就是 unix 格式
最后解决方法是用了UltraEdit软件,在文件菜单下有转换选择DOS转Unix,错误就解决了。
Ultraedit作为文本编辑器有许多其他编辑器所没有的功能,本文介绍一下如何利用UltraEdit 语法着色来优化shell脚本的编辑。
默认地,在UltraEdit中,对shell脚本的语法着色是没有打开的,请按照下面的步骤进行设置来支持这一功能。
- 点击菜单"Advanced->Configuration...",弹出"UltraEdit Configuration"对话框。
- 选择Tab "Syntax Highlighting",找到编辑框"Full path name for wordlist",点击打开按钮。
- 从ue 官方网站下载 wordfile 扩展文件包:http://www.ultraedit.com/files/wf/wf.zip ,解压缩后打开文件'unixshell.uew',将其内容追加到步骤2中打开的文件中。
- 修改unixshell在步骤2中文件里的语言编号(/L#),假设原来最后一种语言编号为/L7,则需要将Unixshell编号设置为/L8。
- 重启UltraEdit,打开你的shell脚本,然后选择菜单: 'View->View as(Highlighting File Type)->Unix Shell Scripts'即可。
利用notepad++来编辑shell脚本时,在编辑菜单下的档案格式转换 转换成unix格式,可以解决出现“syntax error: unexpected end of file ”的错误!
用editplus编写好看的shell脚本
下载bash.acp和bash.stx文件,这两个文件是分别实现语法高亮和语法自动完成用的。
http://pan.baidu.com/share/link?shareid=92073&uk=1729651712
保存至ediplus安装目录
在editplus配置里仿以下配置:
函数模板正则表达式: function[ \t]+[0-9a-zA-Z_]+[ \t]*\([ \t]*\)
配置完后确定保存.
脚本就可以有漂亮的语法着色,
按Ctrl + F11,就可以调出函数列表窗口,快速定位shell函数了