shell 报错:syntax error: unexpected end of file

有时执行脚本时会报错:

[[email protected] shell]# sh -x test.sh
+ $‘\r‘
: command not found
test.sh: line 37: syntax error: unexpected end of file

原因可能是:

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

解决思路:

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

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

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

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”符号,表示的是符。

时间: 2024-10-13 18:57:32

shell 报错:syntax error: unexpected end of file的相关文章

linux shell 报错 Syntax error: Bad for loop variable

在linux下写了一个简单的shell,循环10次. test.sh #!/bin/bash ## ##循环10次 ## for ((i=0; i<10; i++)); do echo Good Morning ,this is $i shell program. done 执行:sh test.sh 报下面的错误. Syntax error: Bad for loop variable 在网上搜索了一下. 因为Ubuntu为了加快开机速度,用dash代替了传统的bash,所以我们这样执行就没问

php报错syntax error, unexpected T_GOTO, expecting T_STRING,报错文件与行数指向以下代码,是什么原因?

本机php版本是5.3.8,Apache/2.2.21public function goto($url, $msg=NULL) {if ($msg) {$this->jsAlert($msg);}$this->js('document.location="' . $url . '";');$this->output(true);exit;} 解决办法是将phpstudy版本号php-5.3.29改为php-5.2.17

关于报错“syntax error near unexpected token `”和回车换行

本来是很简单一个事情,转过来是因为打字机这事比较有趣-- http://blog.csdn.net/xyp84/archive/2009/08/11/4435899.aspx 摘要一下: 回车 换行 0D 0A <CR> <LF> Carriage Return Line Feed "/r" "/n" win32 0D 0D 0A unix 0D 0A ============淡定的分割线=============== 今天写了个shell脚

linux 日志报错:error (unexpected RCODE REFUSED) resolving &#39;

今天在机子上查看日志,偶然间发现了一堆错误.因为之前配置过DNS 和 squid,报错,之后查错,某度了一下,没找到答案. 下面是一点错误信息: Aug  8 11:40:30 host named[1668]: error (unexpected RCODE REFUSED) resolving '208.22.200.65.in-addr.arpa/PTR/IN': 74.115.231.45#53Aug  8 11:40:30 host named[1668]: error (unexpe

Laravel 5.4 migrate报错:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `us ers_email_unique`(`email`))

Laravel 5.4 migrate报错:Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table `users` add unique `us     ers_email_unique`(`email`)) public function up() { Schema::create('users', function (Blu

JS function document.onclick(){}报错Syntax error on token &quot;function&quot;, delete this token

JS function document.onclick(){}报错Syntax error on token "function", delete this token function document.onclick() //任意点击时关闭该控件 //ie6的情况可以由下面的切换焦点处理代替 {    with(window.event)   { if (srcElement != outObject && srcElement != outButton)    

SHELL syntax error:unexpected end of file 提示错误

SHELL syntax error:unexpected end of file 提示错误 if [ -n "$1" ] then echo "111" else echo "222" fi exit 0 执行sh my.sh par 提示syntax error:unexpected end of file.错误请问为什么啊? 文本编辑是在windows下通过记事本编写的这个文件,运行 在cygwin模拟LINUX软件环境下. 解决思路: D

一个参数大小写引发的uploadify报错 &quot;Syntax error, unrecognized expression: #&quot;

上传控件uploadify 报错"Syntax error, unrecognized expression: #" 版本为 uploadify3.2 报错原因:参数ID[hidInfoId]小写错写成了大写. debug过程: ①:报错 "Syntax error, unrecognized expression: #" ②:该错误为jQuery 选择器#取不到ID取ID错误,确定某个ID为空. 可以看到hidInfoId这个参数为空 找到报错的地方. 代码中用到

Shell script fails: Syntax error: “(” unexpected

Shell script fails: Syntax error: “(” unexpected google 一下. http://unix.stackexchange.com/questions/45781/shell-script-fails-syntax-error-unexpected The script does not begin with a shebang line, so the kernel executes it with /bin/sh. On Ubuntu, /bi