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

不知道大家有没有在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下的执行文件了。


  • 22
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
shell脚本中的" syntax error near unexpected token `$'\r'' " 错误通常是由于不同操作系统下的换行格式不兼容所导致的。Windows和Linux系统使用不同的换行符格式,导致在Linux系统上运行时出现错误。解决这个问题的方法有两种: 1. 手动删除换行符:可以使用vim编辑器进入编辑模式,逐行删除每行末尾的^M符号。进入编辑模式后,按下"i"键进入编辑模式,手动删除每行末尾的^M符号,然后按下Shift + ":",输入"wq"保存并退出。 2. 使用vim替换命令:可以使用vim的替换命令来删除所有的^M符号。在vim编辑器中,使用命令"%s/^M//g",其中"^M"表示输入Ctrl + V,然后输入Ctrl + M来表示^M符号,"//"表示替换为空,"g"表示全局替换。这样可以删除文本中所有的^M符号。 以上是两种解决" syntax error near unexpected token `$'\r'' " 错误的方法,根据具体情况选择适合的方法进行处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【shell学习】解决报错syntax error near unexpected token `$‘do\r‘](https://blog.csdn.net/qq_40481843/article/details/127814379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [a982338665#lf-file-build-tool#shell脚本执行错误1](https://download.csdn.net/download/weixin_35784370/86257042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值