SHELL脚本“syntax error: unexpected end of file”解决方案

这篇具有很好参考价值的文章主要介绍了SHELL脚本“syntax error: unexpected end of file”解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目前发现运行shell脚本时, 出现"syntax error: unexpected end of file"的情况有三种, 第三种应该有很多变异的情况

第一种, 常说的window下编写的shell脚本, 放到linux下运行会出现这种报错, 因为win下编写的shell脚本的格式是dos格式的, 这情况网上的解决办法有很多,如下:

如果确实是这种情况,在windows下写好了Shell 但是在linux下用:
sh -n [filesName]  检查语法总是出一个错误 syntax error:unexpected end of file
原因如下:
dos文件传输到unix系统时,会在每行的结尾多一个^M,在vi的时候,当你用如下命令:
vi dos.txt
:set fileformat=unix
:w
就会看到这些存在于每行结尾的^M符号,这个就是产生syntax error:unexpected end of file的原因
解决方案:
在vi下把这些^M都删除后即可。
也可以使用Linux下的工具:dos2unix也可轻松将一个windows下的文本文件转化为Unix兼容的格式。

第二种情况(copy)

不是由于windows和Linux相互拷贝文件而导致的。这个是语法错误嘛,由于我这个shell脚本有点大,看了一阵子也没发现是那句话语法错误了,所以不得不用二分法来查找原因,不断注释一些代码,然后用sh -n test.sh来做语法检查,直到最后找到那一段或者哪一行代码引起的错误。我发现是下面这行代码引起的,你能看出其中的问题吗?^_^
[ -d /home/repo/${SPPATH} ] || { mkdir -p /home/repo/${SPPATH}; cd /home/repo/${SPPATH}; git init >> $GITLOG 2>&1 }
嗯,其实我用花括号{}是想把几个命令组合起来在当前shell中执行,然后我犯了一个语法错误,在最后的一个命令后没有加分号(;)。将这行改为如下即可(添加一个最后的分号):
[ -d /home/repo/${SPPATH} ] || { mkdir -p /home/repo/${SPPATH}; cd /home/repo/${SPPATH}; git init >> $GITLOG 2>&1; }
关于当前shell中执行一组命令,特别要注意的是,在”{“的右边 和”}“的左边,至少要间隔一个以上的空格,而且每个命令都要以分号(;)作为结尾。

第三种情况(low)

  虽然很low, 但还是觉得有必要记录一下!

  那就是, 当你的shell脚本有语法问题的时候, 也会导致报同样的错, 这么说来, 和第二种情况是一样的......(不管了, 就当是第二种情况的一个分支吧)

  看下面的代码, 你能发现么, (估计都新手都能发现 ^^)

  test()

  {  echo "test shell script";  }

  test()

  这里, 其实有shell语法错误, 因为调用方法时, 是不需要括号的"()", 因为这个语法错误, 所以这个脚本跑不了, 所以只需要将这个括号"()" 去掉就可以了

    test(){  echo "test shell script";  }

  test

  同样, 可能在其它情况下, 不满足shell脚本的语法要求的话, 也有很大可能会出现同样的情况, 

  

  总结: 现在学的语言太多了, 各种语言之间有很多相似的地方, 上面代码会加括号, 就是因为写java, C语言写多了, 习惯了, 容易将各种语言之间的语法混淆, 以后要注意了~~~文章来源地址https://www.toymoban.com/news/detail-618029.html

到了这里,关于SHELL脚本“syntax error: unexpected end of file”解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 解决报错SyntaxError:Unexpected end of JSON input

    跳转页面传递参数 报错提示 SyntaxError:Unexpected end of JSON input 原因:若对象的参数或数组的元素中遇到地址中包括? - _ . ! ~ * \\\' ( )等特殊符号时,对象/数组先要通过JSON.stringify转化为字符串再通过 encodeURIComponent 编码,接收时,先通过 decodeURIComponent 解码再通过JSON.parse转换为

    2024年02月11日
    浏览(46)
  • java.io.IOException: unexpected end of stream on Connection

    目录 Java.io.IOException: Unexpected End of Stream on Connection 引言 错误原因 解决方法 结论 在基于Java网络编程的开发中,我们有时可能会遇到​ ​java.io.IOException: Unexpected end of stream on connection​ ​的错误。这个错误提示意味着在与远程服务器建立连接时,发生了无法预料的连接断开的

    2024年02月04日
    浏览(43)
  • OkHttp抛出异常java.net.ProtocolException: unexpected end of stream

    今天用okHttp写了个从本地的Apache服务器上下载资源的安卓app,然后发现偶尔的下载会抛出java.net.ProtocolException: unexpected end of stream的异常,苦思不得结果后上百度查找,百度有很多分析,有可能的原因是响应头Content-length和实体长度不同,找到几个方法,有的说在请求头中添加

    2024年02月16日
    浏览(42)
  • 解决微信小程序报错:“SyntaxError:Unexpected end of JSON input”

    1. 报错原因:        如果对象的参数或数组的元素中遇到地址,地址中包括?、这些特殊符号时,对象/数组先要通过JSON.stringify转化为字符串再通过encodeURIComponent编码;接收时,先通过decodeURIComponent解码再通过JSON.parse转换为JSON格式的对象/数组。 2. 正确的代码如下:

    2024年02月04日
    浏览(32)
  • git 推送出现fatal: The remote end hung up unexpectedly解决方案

    在使用git更新或提交项目时候出现 \\\"fatal: The remote end hung up unexpectedly \\\" 的报错; 报错的原因原因是推送的文件太大。 下面给出解决方法 方法一: 修改提交缓存大小为500M,或者更大的数字 git config --global http.postBuffer 524288000 git config --global http.postBuffer 1048576000 或者在克隆/创建

    2024年02月04日
    浏览(40)
  • harmonyos预览功能报错:[webpack-cli] SyntaxError: Unexpected end of JSON input

    在使用DevEco Studio写页面,进行预览的时候报错: 如图所示: 上一分钟还在好好的写代码,预览功能还能使用,突然下一秒预览功能报错了。 对问题进行分析排查: 1.打开另一个工程,页面可以预览,说明跟开发工具应该没有关系 2.检查代码是否有修改,是否影响 3.仔细查看

    2024年01月23日
    浏览(45)
  • git 报错Encountered end of file

    最近服务器老遇到这问题整体来说就是网络不行之类的因素。 1. Encountered end of file 2. connection to github.com:443

    2024年01月19日
    浏览(65)
  • 已解决UnicodeDecodeError: ‘utf-8‘ codec can‘t decode bytes in position 1022-1023: unexpected end of dat

    已解决使用pycharm run运行代码正常,而debug却抛出异常UnicodeDecodeError: ‘utf-8’ codec can’t decode bytes in position 1022-1023: unexpected end of data,附上三种的正确解决方法,亲测有效!!! 粉丝群里面的一个小伙伴遇到问题跑来私信我,想用pycharm debug,但是发生了报错(当时他心里瞬

    2023年04月20日
    浏览(57)
  • ‘utf8‘ codec can‘t decode byte 0xcd in position 0: unexpected end of data

    nmap在windows安装好后,在命令行输入被扫描的目标,点击扫描提示\\\'utf8\\\' codec can\\\'t decode byte 0xcd in position 0: unexpected end of data 第一步首先检查安装nmap的路径中是否有中文 第二步检查C:userXXX中“XXX”是否为中文 第一步解决方案:第一步的中文路径把nmap卸载,重新安装到英文路径

    2024年02月01日
    浏览(50)
  • java.io.IOException: unexpected end of stream on 以及java.io.EOFException: \n not found: limit=0

    java.io.IOException: unexpected end of stream on java.io.OKHttp Caused by: java.io.EOFException: n not found: limit=0 content=… 在一次使用OkHttp对接两个第三方接口的时候遇到了这个报错,情景是这样的,先请求第一个接口得到一个结果,再把第一个结果作为参数传到第二个接口,但是第二个接口一直

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包