运行shell脚本报错:“syntax error near unexpected token 的解决方法”

今天写了个Cshell脚本,运行报错syntax error near unexpected token `,脚本语法没有问题,最后发现了问题

用命令vi -b 打开你的SHELL脚本文件,你会。发现每行脚本最后多了个^M。
1
老式的电传打字机使用两个字符来另起新行。一个字符把滑动架移回首位 (称为回车,,ASCII码为0D),另一个字符把纸上移一行 (称为换行, ,ASCII码为0A)。当计算机问世以后,存储器曾经非常昂贵。有些人就认定没必要用两个字符来表示行尾。UNIX 开发者决定他们可以用 一个字符来表示行尾,Linux沿袭Unix,也是。Apple 开发者规定了用。开发 MS-DOS以及Windows 的那些家伙则决定沿用老式的。

因为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。
————————————————
版权声明:本文为CSDN博主「Michael177」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:链接: https://blog.csdn.net/Michael177/article/details/101618068

运行shell脚本报错:“syntax error near unexpected token 的解决方法”相关推荐

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

    今天写了一个shell脚本,老报错检查了一下基本的语法并没有发现错误.后来经过百度解决掉了,现总结如下. 错误现象:执行shell脚本,老报错"syntax error near unexp ...

  2. linux shell脚本无法执行,报错syntax error near unexpected token `$'\r''解决方法

    运行shell脚本时出现:syntax error near unexpected token `$'\r"的错误,一般是格式的问题,比如直接从txt文档拷贝过来的内容: 解决方法:sed ...

  3. bash报错syntax error near unexpected token `$‘\r‘‘解决方法

    之前的shell脚本是在服务器上编写的,后来又已复制的方式存在在了电脑上,以txt文件的形式存放的.于是复制到了编辑工具中,进行了相应项的修改.修改完毕后,拿到服务器上测试,结果执行sh XXX.sh ...

  4. Windows下运行python脚本报错“ImportError: No Module named ...”的解决方法

    Windows下运行python脚本报错"ImportError: No Module named ..."的解决方法 参考文章: (1)Windows下运行python脚本报错& ...

  5. sh运行时直接报错了syntax error near unexpected token `$‘\r‘

    用文本编辑器写完脚本后,上传到Linux,sh运行时直接报错了syntax error near unexpected token `$'\r' 两种解决方法 第一种 第一步 vim -b XXX.s ...

  6. shell if else 用法 syntax error near unexpected token `then'

    1.  错误 #!/bin/bash platform=$1 if[ "$platform" = "ibmaix64" ] then       echo &q ...

  7. jenkins 运行 shell脚本报错,Failed to restart tomcat.service: Interactive authentication required

    解决方法:需要以ROOT用户运行或者赋权jenkins用户 1.修改Jenkins配置文件 打开配置文件 vim /etc/sysconfig/jenkins 修改$JENKINS_USER,并去掉当 ...

  8. 运行shell脚本报错:“syntax error near unexpected token fi 的解决方法

    用vim打开文件,在命令行模式下输入 :set ff 发现出来的是dos fileformat=dos 现在通过命令:set ff=unix设置我们的代码模式 set ff = unix 然后保存代码 ...

  9. Linux 中出现的 -bash: syntax error near unexpected token `newline'问题解决

    在命令端输入:python grad-cam.py  <cat_dog.png> 出现如下错误:bash: syntax error near unexpected token `newl ...

最新文章

  1. SDL2源码分析6:拷贝到渲染器(SDL_RenderCopy())
  2. 每天学一点儿shell:Shell的常用语法规则
  3. 读CLR via C#总结(7) 以传引用的方式向方法传递参数---refout
  4. 张俊红22岁年度总结
  5. 头指针与头结点的异同
  6. 递归实现排列型枚举(搜索)
  7. Ubuntu18.04安装wireshark3.0.6(版本可自己选)
  8. clone,Duplicate复制target XCode iOS
  9. Github Desktop for macos_zh 汉化
  10. 关于Canvas 常用API汇总
  11. Python微博评论进行情感分析
  12. Justinmind教程(3)——管理原型
  13. 从零开始制作点餐Android app(一)
  14. 使用Galen进行Responsive Web测试四部曲
  15. 公会晋升计划第 2 季来啦!
  16. 修改文件扩展名(只需四步)
  17. QGIS与网易有道词典冲突
  18. 苹果保修期多久_苹果和安卓数据线怎么选?一根数据线质保三年,小米生态链做到了...
  19. 如何查找计算机的品牌型号,笔记本怎么看型号 各品牌笔记本型号查看方法
  20. 怎么传文件到百度云服务器,别人传文件给我 可是怎么用百度网盘保存文件呢 其实很简单!...

热门文章

  1. 计算机excel百分比怎么操作,excel怎么求百分比
  2. Balsamiq Mockups自定义字体设置
  3. Java实现RSA加密算法
  4. Python【超强学习网站】
  5. custom-lib-path、engine-create的作用及如何使用他们parse-bbox(dete)deepstream-test1解析yolov5的engine引擎文件需要解析网络库(精)
  6. gif循环播放_防止动画GIF循环播放
  7. 【图像分割】基于模糊聚类FCM和改进的模糊聚类算法实现CT图像分割matlab代码
  8. 各地区城镇居民人均全年消费的因子分析--基于R
  9. TIN处理之地形合并——SuperMap iDesktop
  10. 求救!搞不明白(?u)代表什么