• shell 报错:syntax error: unexpected end of file


    有时执行脚本时会报错:

    [root@host1 shell]# sh -x test.sh 
    + $'
    '
    : command not found
    test.sh: line 37: syntax error: unexpected end of file

    原因可能是:

    文本编辑是在windows下通过记事本或其它编辑器编写的这个文件,运行 在cygwin模拟LINUX软件环境下。

    解决思路:

    DOS下文件和Linux下文件格式差异问题导致的。

    DOS下的文本文件是以 作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以 作为断行标志的,表示成十六进制就是0A。

    【在windows里,换行用的两个符号,回车 ,换行符号 ,在linux下只需一个符号 就可以了.】

    DOS格式的文本文件在Linux下,用较低版本的vi打开时行尾会显示^M,当然也有可能看不到,但是在vi的时候,会在下面显示此文件的格式,"M.txt" [dos] 8L, 72C表示是一个dos文件格式。

    解决方案:

    使用下面的命令将文件格式设置为unix格式即可解决上述错误

    vi test.sh
    :set fileformat=unix
    :wq

    为什么windows下编辑的脚本直接拷贝到unix系统下无法直接运行?

    linux执行SHELL脚本报错“syntax error near unexpected token `in”

    long long ago..... 老式的电传打字机使用两个字符来另起新行。一个字符把滑动架移回首位 (称为回车,<CR>,ASCII码为0D),另一个字符把纸上移一行 (称为换行, <LF>,ASCII码为0A)。当计算机问世以后,存储器曾经非常昂贵。有些人就认定没必要用两个字符来表示行尾。UNIX 开发者决定他们可以用 一个字符来表示行尾,Linux沿袭Unix,也是<LF>。Apple 开发者规定了用<CR>。开发 MS-DOS以及Windows 的那些家伙则决定沿用老式的<CR><LF>。

    因为MS-DOS及Windows是回车+换行来表示换行,因此在Linux下用Vim查看在Windows下用VC写的代码,行尾后的“^M”符号,表示的是符。

  • 相关阅读:
    python基础三大器之装饰器
    python基础之推导式及匿名函数和高阶函数
    python基础之三大器中迭代器和生成器
    python基础之函数(动态参数,注释,名称空间,第一类对象及使用和函数嵌套)
    python基础之初识函数
    python基础之文件操作
    python基础之集合及基础补充(循坏删除,二次编码)
    Python基础之小数据池及深浅拷贝
    python基础之字典
    数据结构-栈
  • 原文地址:https://www.cnblogs.com/01-single/p/7449304.html
Copyright © 2020-2023  润新知