syntax error near unexpected token `$’do\r”报错问题

原创 2016年11月05日 11:07:24

不知道大家有没有在windows上面编写shell脚本,然后部署到linux上运行的经历,如果你做过类似的事情,那你可能遇到过这个问题:syntax error near unexpected token `$’do\r”,或者类似的问题。

问题描述

 运行shell脚本shell脚本,运行出错:syntax error near unexpected token `$’do\r


 问题原因:Linux和windows下的回车换行符不兼容


    文件格式区别:

    我们先看看这三个者有何区别。很久以前,人们用老式的电传打字机作为输入设备,它使用

两个字符来另起新行。一个字符把滑动架移回首位 (称为回车:<CR>,另一个字符把纸上移一行
(称为换行:<LF>)

       
当计算机问世后,由于存储器曾经非常昂贵。有些人就认定没必要用两个字符来表示行尾。于是
UNIX 开发者决定他们可以用<Line Feed>即<LF>,一个字符来表示行尾。
Apple 开发者规定了用<CR>。
开发 MS-DOS (以及微软视窗) 的那些家伙则决定沿用老式的<CR><LF>
三种行尾格式如下:
        unix为:  <LF>      : /n

        dos为:   <CR><LF>  : /r/n

        mac为:  <CR>      : /r

所以:这也是为什么window将<CR><LF>的文件转移到unix上会出现syntax error near unexpected token `$’do\r”的原因。

  
问题解决:

1、在windows上可以用文本编辑器查看所有字符,例如notepad++,视图->显示符号->显示所有符号,如下:


在每行的结尾显示了CRLF的符号问题正是由此产生的。


2、用文本编辑器解决办法,eclipse等编辑器都可以解决,拿notepad++来说,编辑->档案格式转换->转换为UNIX格式:


 

进行转换之后就成了如下:


再放到linux上运行就不会出现以上报错了。

3、使用dos2unix工具进行处理。

再linux上安装dos2unix工具:sudo apt-get install dos2unix(根据系统使用不同命令安装)

安装成功后可以定义一个shell脚本,或者手动执行一下命令

dos2unix  *.sh

就会看到:dos2unix: converting file eval1.sh to Unix format ...

就将这个文件转换为了linux下的执行文件了。


版权声明:本文为博主原创文章,未经博主允许不得转载。

shell编程报错:“syntax error near unexpected token `”

         今天写了个shell脚本,在自己机器上运行正常,给同事,运行报错syntax error near unexpected token `,左看右看shell脚本没有问题,没有办法go...
  • xyp84
  • xyp84
  • 2009年08月11日 19:12
  • 71146

解决执行脚本报syntax error: unexpected end of file或syntax error near unexpected token `fi'错误的问题

我们在编辑Linux服务器上的文件时,如果直接在Linux环境下编辑的话,比较麻烦,大段粘贴格式比较乱,还得自己一行一行去调整,因此会选择用编辑器来编辑我们Linux环境下的文件,我用的是NodePa...
  • u012453843
  • u012453843
  • 2017年04月09日 12:25
  • 5768

脚本报syntax error near unexpected token `(',

本来可以跑的脚本,最近忽然在运行时报syntax error near unexpected token `(',,但代码语法看起来并没有什么明显的错误 。 怀疑是用特殊字符造成的,使用"vi -b...
  • xcltapestry
  • xcltapestry
  • 2014年03月25日 20:47
  • 8035

syntax error near unexpected token `then'问题的解决

#!/bin/bash #if program test echo 'a:' read a if  [  "$a"  =  "English"  ];then echo "right"...
  • caihongshijie6
  • caihongshijie6
  • 2013年12月22日 18:38
  • 3955

shell if判断语句 报错:syntax error near unexpected token `elif'

转载:http://blog.sina.com.cn/s/blog_695ef52801018f09.html 在xshell下,用notepad++写了个简单的shell脚本,内容如下: #...
  • m53931422
  • m53931422
  • 2015年01月14日 17:41
  • 3653

运行shell脚本提示“syntax error near unexpected token for((i=0;i<$length;i++))”

运行shell脚本提示“syntax error near unexpected token for((i=0;i
  • yeweiouyang
  • yeweiouyang
  • 2014年06月18日 11:35
  • 2846

-bash: syntax error near unexpected token `('--------错误

在Linux ,出现下面的错误。 -bash: syntax error near unexpected token `(' 检查了脚本没有错误: imp mzl/mzl fromu...
  • cnlihaijun
  • cnlihaijun
  • 2017年03月17日 23:24
  • 977

shell “syntax error near unexpected token '$'\r''” 错误解决方法

这种情况发生的原因是因为你所处理的文件换行符是dos格式的"\r\n"。 可以使用cat -v 文件名 来查看换行符是否是,如果是上述的,则行结尾会是^m。 需要转换成linux/...
  • piaoxuefengqi
  • piaoxuefengqi
  • 2014年02月28日 16:22
  • 2790

mac上运行报错:syntax error near unexpected token `('

mac上checkout branch分支报错,是因为后面的名字里面带了括号, 例如分支为ABC,所以为git checkout ABC 如果分支为ABC(c1),git checkout AB...
  • likui1989
  • likui1989
  • 2017年07月07日 10:11
  • 673

关于报错“syntax error near unexpected token `”和回车换行

本来是很简单一个事情,转过来是因为打字机这事比较有趣……http://blog.csdn.net/xyp84/archive/2009/08/11/4435899.aspx============淡定...
  • windless0530
  • windless0530
  • 2010年12月15日 14:40
  • 78398
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:syntax error near unexpected token `$’do\r”报错问题
举报原因:
原因补充:

(最多只允许输入30个字)