Shell 异常记录: [syntax error: unexpected end of file]

作者:zjruan 日期:2017-06-24
关键词:shell、终端、syntax error
描述:shell 脚本 异常问题记录

今天在测试 shell 脚本文件引入的功能,即 Shell 文件包含

. filename #注意(.)号与filename中间有空格
或
source filename

很简单的一条命令,但是执行却一直报错。于是写了几个demo来测试一下这个问题。环境是 Mac 下的终端。

shellTest.png

问题描述:

源码如上图,预期结果是

>sh index.sh
name.sh 文件存在
Hello zjruan

但是在执行index2.sh的时候,却报错了

>sh index2.sh
index2.sh: line 7: syntax error: unexpected end of file

也有可能是这样的错误

>sh index2.sh
'index2.sh: line 6: syntax error near unexpected token `
'index2.sh: line 6: `fi

问题分析:

一开始以为是代码的问题,于是将实例代码完全copy 下来,执行,但是依然报错,而且错误提示基本一致,于是排除手误写错代码的可能性,但是它报的是语法错误,所以先尝试这简化代码看看。

第一次尝试

我们将 index2.sh 精简到最简单,只有1条命令,

# index2.sh
pwd #打印当前位置

然后执行(sh index2.sh),结果执行正常,如下图

test1.png

第二次尝试

第一次尝试的成功,让我倍感兴奋,以为问题就要被解决。我们适当的增加了代码的负责度,变成了两行代码。
执行之后,我们发现报了一个错。这两行简单的代码,肯定不会写错,那再报错的,肯定就不是代码的问题,于是我们开始查看是不是环境的问题。

# index2.sh
pwd #打印当前位置
echo 'Hello'
>sh index2.sh
: command not foundpwd
Hello
test2.png

第三次尝试

将错误提示放到 google 和 百度 里都搜索了一下,关键词是:
syntax error near unexpected token \fi' my.sh: line 6: `fi'`

最终,在众多的文章里找到了这篇博客,与我的问题比较相似。
test.sh: line 8: syntax error near unexpected token `fi'
他的解决方式是:

image.png

于是我按照他的思路。将文件都删除了,使用我vim 新建了文件,在键入代码,发现执行成功。
但是这样太麻烦了。
现在写 demo 还可以删,但生产环境的shell脚本也是随便删的么?再说,再敲一遍敲过的代码,也是特别烦人的。
于是就思考,window 的 文件格式 与 linux 有什么区别?

解决

window 文件与 linux 格式最多的区别是什么呢?
『换行符』
对就是它,
window下默认换行是 CRLF
linux 下默认换行是 LF
于是将文件在 CRLFLF间切换,再执行,发现问题复现 和 解决。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一,shell题记 不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有效的提高工...
    架构师小秘圈阅读 12,777评论 3 70
  • 0.linux启动的步骤 设备加电----》BIOS自检-----》grub引导启动-----》加载内核----》...
    萌面大叔2阅读 4,183评论 0 1
  • 本文全面系统地介绍了shell脚本调试技术,包括使用echo, tee, trap等命令输出关键信息,跟踪变量的值...
    liuzg0734阅读 4,442评论 0 14
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 100,037评论 9 468
  • 这是我第一次尝试使用双拼输入法翻译一篇日本的Liunx基础教材上的一章。共花费一周左右。 shell的使用 前言 ...
    今後次阅读 4,654评论 0 4

友情链接更多精彩内容