情景:
同样的的脚本, 在不同的机器下运行有的可以成功, 有的运行失败,
前提: sh 脚本 windos 下编辑过.
脚本在 Windows 上修改之后, 在每行尾部多了个 ^M, 导致 sh 脚本在执行的时候可能 shbang 解析不了, 导致脚本执行不了
报错 Syntax error: "(" unexpected (expecting "then") 语法解析错误
解决:
在 Linux 查看 ^M, 需要使用如下命令:
VIM 下 :e ++ff=unix %
去掉 ^M 的方法:
1. 在 VIM 的命令模式中输入 :%s/^M$//g 后, 回车即会自动删除该文件中的所有 ^M 字符.
^M 注意要用 Ctrl + V Ctrl + M 来输入
- 2.cat filename1 | tr -d "\r"> newfile
- sed -e "s/^V^M//" filename> outputfilename
- 4.tr -d '\015' <filename> newfile
简单的, 直接使用 dos2unix, 将 dos 下的文件转换成 unix 文件, 可以将后面的 ^M 去掉.
来源: http://www.bubuko.com/infodetail-3324675.html