开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

linux的shell脚本报错“syntax error near unexpected token `”的解决

简介:
+关注继续查看

    今天写了一个shell脚本,老报错检查了一下基本的语法并没有发现错误。后来经过百度解决掉了,现总结如下。 

    错误现象:执行shell脚本,老报错“syntax error near unexpected token `”

    解决办法:vim -b example.sh打开文件,发现文件每一行的末尾多了一个^M,这个问题在使用vim example.sh查看是看不见的,只能通过报错来判断使用vim -b才能发现问题。

wKioL1idxdbzc0yuAAATvQhmgZ0815.pngwKioL1idxkDhTwRcAAAjrGbrjzk867.png

    因为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”键生成的。

  这样替换掉以后,保存就可以执行了。当然还有其他的替换方式比如:

    一些linux版本有 dos2unix 程序,可以用来去除^M。

    错误原因:写脚本时,先使用了UltraEdit编辑好了脚本,然后存在了版本是windos的电脑上,随后传输到linux系统内去执行的。可能是存储文本时启用了默认的DOS格式。




本文转自 ping9527 51CTO博客,原文链接:http://blog.51cto.com/babyhanggege/1896833,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
****Linux MySQL命令运用个人总结
1、xampp在linux下如何使用mysql命令 A: 解决方法(推荐第二个方法):   1、xampp中的命令工具在/opt/lampp/bin/目录中,所以可以这样运行mysql命令      /opt/lampp/bin/mysql -uroot -p      2、也可以进...
765 0
13688
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载