dos下编辑过sh脚本后无法运行

Posted 0916m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dos下编辑过sh脚本后无法运行相关的知识,希望对你有一定的参考价值。

情景:
同样的的脚本,在不同的机器下运行有的可以成功,有的运行失败,
前提: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 " " > newfile

  1. sed -e "s/^V^M//" filename > outputfilename
    4.tr -d ‘15‘ < filename> newfile

简单的,直接使用dos2unix, 将dos下的文件转换成unix文件,可以将后面的^M去掉。

以上是关于dos下编辑过sh脚本后无法运行的主要内容,如果未能解决你的问题,请参考以下文章

使用 cron 每 5 分钟后无法运行 python 脚本

编写shell脚本运行python文件

Linux systemd 自启动脚本无法正常运行(求助分析方向)

centos 系统下sh脚本无法执行的问题处理

Unity3D中项目在Unity编辑器下正常运行打包成功exe后无法正常运行

Unity3D中项目在Unity编辑器下正常运行打包成功exe后无法正常运行