加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

LINUX实战:syntax error near unexpected token 脚本报错误解决

发布时间:2020-12-13 17:32:03 所属栏目:Linux 来源:网络整理
导读:《LINUX实战:syntax error near unexpected token 脚本报错误解决》要点: 本文介绍了LINUX实战:syntax error near unexpected token 脚本报错误解决,希望对您有用。如果有疑问,可以联系我们。 向朋友要了一个Shell脚原来在Linux试用,发现执行时就报错:

《LINUX实战:syntax error near unexpected token 脚本报错误解决》要点:
本文介绍了LINUX实战:syntax error near unexpected token 脚本报错误解决,希望对您有用。如果有疑问,可以联系我们。

向朋友要了一个Shell脚原来在Linux试用,发现执行时就报错:syntax error near unexpected token,仔细查找了还是没找到错误,后来发现脚本内容每行尾行都添加了^M的字符,查看方式:vi -b 打开脚本文件

后来想了下,造成这个的原因应该是脚本有试过拿到Win机器上存放,期间也用Win下的编纂器编纂过.

如今简单整理如下:

使用vim -b敕令查看文件内容如下:

每一行多了一个^M有木有?

那么接下来就要搞清晰这个^M是什么东东?

long 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”符号,表现的是换行符.

基本解决办法有三个:

1.用vim编纂器替换

vim -b filename

在敕令模式下执行%s/^M//g进行替换

注意:上述敕令行中的“^M”符,不是“^”再加上“M”,而是由“Ctrl+v”、“Ctrl+M”键生成的.

2.使用dos2unix敕令进行转换

Dos2unix在有些版本的体系中默认是安装的.

在Linux中,文本文件用"n"表现回车换行,而Windows用"rn"表现回车换行.所以在Linux中使用Windows的文本文件常常会出现错误.为了避免这种错误,Linux提供了两种文本格式相互转化的命令:dos2unix和unix2dos,dos2unix把"rn"转化成"n",unix2dos把"n"转化成"rn".

命令dos2unix和unix2dos的使用异常简单,格式为:dos2unix filename

假如想了解更多,可以查看手册.man dos2unix

3.使用文本处置工具

cat filename | tr -d "/r" > newfile 去失落^M生成一个新文件.

同样还有sed敕令等,凡是可以替换的敕令都是可以用来新生成一个文件的.

另外,在上传到Linux平台过程中,可以选择上传类型为二进制,也可以避免此问题,年夜家可以试一下

本文永远更新链接地址

编程之家PHP培训学院每天发布《LINUX实战:syntax error near unexpected token 脚本报错误解决》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读