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命令等,凡是可以替换的命令都是可以用来新生成一个文件的。
P:其实上面方法不太好用,这里有更简单的方法,不要怪我说的太晚,觉得这样大家能多了解点。。哈哈
http://jingyan.baidu.com/article/9f63fb91d014b8c8410f0e7a.html
相关推荐
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...
在Linux系统中,尤其是CentOS 7这样的发行版,运行.sh脚本时遇到"**syntax error: unexpected end of file**"或"**syntax error near unexpected token 'fi'**"这样的错误,通常是因为脚本文件的格式问题。...
NTP(Network Time Protocol)是一种用于同步网络中计算机时间的协议。ntp-4.2.4p7源码包是NTP的一个版本,它包含了实现NTP服务所需的所有源代码和资源。在这个版本中,你可以找到编译和配置NTP服务器以确保网络设备...
dex2jar2.0版本,可以将.dex反编成jar的简单软件,使用方法:运行dex2jar.jar
2、如果报错:syntax error near unexpected token,执行:sed -i 's/\r$//' linuxinspect.sh) 支持linux系统(centos)进行自动化的安全检测,包括账号策略检查、重要文件权限检查、ssh配置检查、日志检查等。 ...
在编程过程中,我们可能会遇到各种错误,其中"Unexpected token c in JSON at position 0"是一个常见的JavaScript解析错误,通常发生在尝试使用`JSON.parse()`函数解析一个预期为JSON格式的字符串时,但该字符串实际...
1.错误:syntax error near unexpected token '$'\r'' 2.原因:windows换行符格式和linux换行格式不兼容 2
PHP中的异常处理是通过面向对象的方式实现的,它允许在程序运行时出现错误的情况下,程序流程能够得到适当的控制。异常处理机制通过抛出异常和捕获异常来实现,当程序执行中发生异常情况时,可以中断原有的执行流程...
例如,"error: cannot find symbol" 或 "syntax error near unexpected token"。 2. **检查错误行**:根据错误信息,仔细检查出错的代码行,看看是否有明显的语法错误或遗漏。 3. **逐步调试**:如果错误信息不够...
SyntaxError: Unexpected token } */ parseJson ( json ) ; /* JSONError: Unexpected token } in JSON at position 16 while parsing near '{ "foo": true,}' 1 | { 2 | "foo": true, > 3 | } | ^ */ parseJson ...
忽略这些规则将导致Shell抛出诸如`syntax error near unexpected token 'then'`之类的错误消息。 #### 五、其他常见的空格规则 1. **操作符之间的空格**:当使用条件测试操作符时,操作符之间也需要用空格分开。...
- **Unexpected token 'xxx'**: 意外的标记“xxx”,可能是因为代码中出现了不符合预期的字符或指令。 - **Uninitialized variable 'xxx' used**: 未初始化的变量“xxx”被使用,可能会导致程序行为不确定。 - **...