今天写了个shell脚本,在自己机器上运行正常,给同事,运行报错syntax error near unexpected token `,左看右看shell脚本没有问题,没有办法google搜索,发现一位仁兄讲的挺好,内容如下:
用命令vi -b 打开你的SHELL脚本文件,你会。发现每行脚本最后多了个^M。
那么接下来就要搞清楚这个^M是什么东东?
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”符号,表示的是符。
在Vim中解决这个问题,很简单,在Vim中利用替换功能就可以将“^M”都干掉,键入如下替换命令行:
1)vi -b setup.sh
2)在命令编辑行<就是: 按ESC键 然后shift+:冒号>输入:%s/^M//g
注意:上述命令行中的“^M”符,不是“^”再加上“M”,而是由“Ctrl+v”、“Ctrl+M”键生成的。
这样替换掉以后,保存就可以执行了。当然还有其他的替换方式比如:
a.一些linux版本有 dos2unix 程序,可以用来祛除^M。
b.cat filename1 | tr -d "/r" > newfile 去掉^M生成一个新文件,还有sed命令等,凡是可以替换的命令都是可以用来新生成一个文件的。
按照上面所说的,删除^Mshell脚本就运行正常,后来问同事,原来他windows记事本中修改了程序路径,导致每一行多出了^M。
相关推荐
unity 打包web包报错:Uncaught SyntaxError: Unexpected token '在打包文件添加此配置文件。 <mimeMap fileExtension
start.sh: line 17: syntax error near unexpected token `$'do\r'' 'tart.sh: line 17: ` do 原因 运行cat -v start.sh,如果内容结尾为是^M,这是因为你所处理的文件换行符是dos格式的”\r\n”,你可能在windows...
主要介绍了Vue项目报错:Uncaught SyntaxError: Unexpected token <,在引入第三方依赖的 JS 文件时,遇到的一个问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本文实例讲述了JS提示:Uncaught SyntaxError: Unexpected token ILLEGAL错误的解决方法。分享给大家供大家参考,具体如下: Uncaught SyntaxError: Unexpected token ILLEGAL 未捕获的语法错误: 意想不到的非法...
前言: 项目使用vue-cli版本2.9.3 ,vue-router...页面全白,console打印:Uncaught SyntaxError:Unexpected token < 报错截图: 经过一番折腾,初步定位问题1在经过build/webpack.prod.conf.js的chunkhash打包后的JS文
主要介绍了JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法,结合实例形式分析了javascript提示此类异常的常见原因与相关解决方法,需要的朋友可以参考下
在使用AjaxFileUpload进行文件上传时,可能会遇到一些常见的问题,比如“无返回结果”或者在尝试解决问题后出现“syntaxError: unexpected”的错误提示。这个情况通常与JavaScript语法错误、服务器端响应格式、...
在PHP编程过程中,可能会遇到各种类型的错误,其中“Parse error: syntax error, unexpected end of file”是一个常见的编译时错误,意味着解析器在文件末尾遇到了意外的情况,通常是因为代码的语法不正确导致的。...
在本文中,我们将详细探讨"PHP Parse Error: syntax error, unexpected $end"错误的产生原因及其解决办法。此问题在配置服务器或编写PHP脚本时可能会遇到,通常提示是在代码的特定行数发生了语法错误。下面,我们将...
2、如果报错:syntax error near unexpected token,执行:sed -i 's/\r$//' linuxinspect.sh) 支持linux系统(centos)进行自动化的安全检测,包括账号策略检查、重要文件权限检查、ssh配置检查、日志检查等。 ...
主要介绍了vue-cli 打包后提交到线上出现 "Uncaught SyntaxError:Unexpected token" 报错,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
在Linux系统中,尤其是CentOS 7这样的发行版,运行.sh脚本时遇到"**syntax error: unexpected end of file**"或"**syntax error near unexpected token 'fi'**"这样的错误,通常是因为脚本文件的格式问题。...
docker build --rm -t thelebster/mongo-shell-example .docker run -ti --rm --name mongo-shell-example -d thelebster/mongo-shell-exampledocker exec -it mongo-shell-example bashdocker run -ti --rm --name...
报错:Uncaught SyntaxError: Cannot use import statement outside a module 详解原文链接: ht
针对这些知识点,我们在实际编程中应当如何操作来避免这类“Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE eval()’d code error”错误呢? - 在使用eval()函数时,务必要对输入的字符串进行...