syntax error near unexpected token `$’do\r”报错问题
来源:互联网 发布:恋上我的帅和尚知乎 编辑:程序博客网 时间:2024/05/22 09:23
不知道大家有没有在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
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下的执行文件了。
1 0
- syntax error near unexpected token `$’do\r”报错问题
- cygwin shell报错: syntax error near unexpected token `$'{/r''
- cygwin syntax error near unexpected token `$'do\r''
- 脚本报syntax error near unexpected token `(',
- 运行shell脚本报错: syntax error near unexpected token `'\r''
- shell编程报错:“syntax error near unexpected token `”
- rsync 脚本报错 “syntax error near unexpected token `(”
- shell编程报错:“syntax error near unexpected token `”
- shell编程报错:“syntax error near unexpected token `”
- shell---shell编程报错:“syntax error near unexpected token `”
- shell编程报错:“syntax error near unexpected token `”
- shell编程报错:“syntax error near unexpected token `”
- shell编程报错:“syntax error near unexpected token `”
- cygwin 报错“syntax error near unexpected token”
- shell 脚本报错^M: syntax error near unexpected token
- 脚本报错:syntax error near unexpected token
- mac上运行报错:syntax error near unexpected token `('
- shell编程报错:“syntax error near unexpected token `”
- 关于android6.0网络连接感叹号的问题
- 一个程序员2年外包工作的跳槽之路
- python中闭包
- 配置
- Dijkstra算法(无负权值)
- syntax error near unexpected token `$’do\r”报错问题
- Android-Intent传递对象序列化之Serializable与Parcelable
- HDU 4507 吉哥系列故事——恨7不成妻 【数位DP】
- 欢迎使用CSDN-markdown编辑器
- 认识Vue.js+Vue.js的优缺点+和与其他前端框架的区别
- java设计模式中的工厂模式
- labview的学习之路
- jsp基础语法整理
- 【Java】Java的命令行参数