在Linux下编译运行脚本的时候出现”/bin/bash^M: 坏的解释器: 没有那个文件或目录(bad interpreter: No such file or directory)“这样的错误。

解决方法:

使用在终端输入sed -i 's/\r$//' check_tool.sh即可

其中check_tool.sh为文件名,这里改成自己需要的即可

原因:

这个文件在Windows 下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n

sed -i 's/\r$//' check_tool.sh 会把check_tool.sh中的行尾的\r替换为空白

详细解析:

这跟系统有关。脚本文件在windows下编辑过,windows下每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,

用cat-A filename时你可以看到这个\r字符被显示为^M

  1. #!/bin/bash^M$
  2. ^M$
  3. #Program:^M$
  4. ^M$
  5. #    ip scanner ^M$
  6. ^M$
  7. #Author:^M$
  8. ^M$
  9. #    wangzhe^M$
  10. ^M$
  11. #Time:^M$
  12. ^M$
  13. #    2012-9-1^M$
  14. ^M$
  15. #eaxmple:sh scanner.sh 192.168.1.101^M$
  16. ^M$
  17. ^M$
  18. ^M$
  19. network=$(echo $1 | cut -d. -f1-3)^M$
  20. ^M$
  21. ^M$
  22. ^M$
  23. for i in $(seq 1 254)^M$
  24. ^M$
  25. do^M$
  26. ^M$
  27. ping -c 1 -w 1 $network.$i > /dev/null ^M$
  28. ^M$
  29. if [ $? -eq 0 ]; then ^M$
  30. ^M$
  31. arp $network.$i | grep ":" | awk '{print $1,$3}'     ^M$
  32. ^M$
  33. echo "host $network.$i is up"^M$
  34. ^M$
  35. else ^M$
  36. ^M$
  37. echo "host $network.$i is down"^M$
  38. ^M$
  39. fi^M$
  40. ^M$
  41. done^M$

PS:cat -A 什么意思?

A就是all的意思,就是所有的都显示出现,也就是说\n\r默认是不显示的。

这时候只需要删除这个字符就可以了。

怎么删掉呢?

正则表达式sed-i 's/\r$//'filename

说明:

  1. -i插入
  2. s替代模式
  3. \r$表示任何以\r结束的字符
  4. 整句意思是把以\r结束的字符换成空白

Error处理:/bin/bash^M: 坏的解释器: 没有该文件或目录(bad interpreter: No such file or directory)的更多相关文章

  1. /bin/bash^M: 坏的解释器: 没有那个文件或目录

    在Linux下编译cocos2d-x运行脚本的时候出现”/bin/bash^M: 坏的解释器: 没有那个文件或目录“这样的错误如下图. 解决方法: 使用在终端输入sed -i 's/\r$//' ma ...

  2. shell脚本报错:.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

    .sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录 这是因为shell脚本是Windows下编辑的 格式不一样 执行 sed -i 's/\r$//' 脚本名称.sh

  3. 工作笔记:/bin/bash^M: 坏的解释器: 没有那个文件或目录 问题解决

    问题原因: 由于windows上换行符为CR LF而在Linux下是 LF 导致出现上述问题 解决方案 1. 在windows下 可以使用nodepad打开该shell文件,然后将shell文件中的格 ...

  4. 执行./install.sh时报错-bash: ./install.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

    百度解释说是因为这个文件在windows下编辑过,windows下每一行的结尾是\n\r, 而linux下每一行结尾是\n,所以只需要删除这个文件中的\r字符就可以了sed -i 's/\r$//' ...

  5. windows打包脚本出现 /bin/sh^M: 坏的解释器: 没有那个文件或目录 错误

    1.错误描述 我在Windows 10 系统下打包dolphinscheduler,上传到centos7解压之后,执行脚本报如下错误: -bash: ./dolphinscheduler-daemon ...

  6. Linux下执行脚本文件出现-bash: ./startup.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录

    原因:脚本文件是在Windows环境下编辑的,windows环境下,每一行的结尾是\n\r,而Linux环境下,每一行结尾是\n.使用cat  -A  filename 可以看到每行的结尾后面多出了一 ...

  7. 解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题

    PS背景:我在公司做sdk 的pc端开发,所以经常会在win下编译通过之后跑到linux下再运行一次已确保能支持多平台. 今儿在win下跑完一程序,然后放到linux下跑的时候,我用指令: [plai ...

  8. linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置

    一.linux下编译make文件报错“/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/41542101 ...

  9. bash: ./vmware-install.pl: /user/bin/perl: 坏的解释器:没有那个文件或目录

    ----------------安装VMwere Tools------------------------bash: ./vmware-install.pl: /usr/bin/perl: bad ...

随机推荐

  1. delphi FastReport 安装方法

    (最近记忆力真的不行了,装了很多遍,过段时间重装delphi又不记得了,又要折腾,现在先记录下来,留给下次翻) 1.下载安装包,这里提供一个百度云盘共享链接,版本为fastreport5: https ...

  2. 为已经存在的TFS团队项目配置SharePoint集成

    配置好TFS团队项目集合与SharePoint站点集的集成后,就可以在新建TFS团队项目时集成SharePoint站点,也可以为已经存在的团队项目配置SharePoint站点的集成,如下图:   Fi ...

  3. [Erlang18]教练!又发现Erlang Shell里面的神奇函数一只

      人嘛,总是想提高效率,创造更多的价值,同时也得到更多的选择空间.可一个人的精力,时间终归是有限的,减少自身重复或无意义工作就显得格外重要! 要么懂得授权,要么把重复的工作交给机器来做: 现实: 美 ...

  4. 比较git commit 两个版本之间次数

    #!/bin/bash f1="$1*" f2="$2*" echo "第一个版本:"$f1 echo "第二个版本:" ...

  5. java环境和Tomcat环境

    这些变量名是一样的,变量的值需要自己根据自己的安装位置来确定 JAVA_HOME C:\Program Files\Java\jdk1.8.0_151 CATALINA_HOME(这个可能不需要) D ...

  6. 【转】如何成为一名优秀的web前端工程师(前端攻城师)?

    [转自]http://julying.com/blog/how-to-become-a-good-web-front-end-engineer/ 程序设计之道无远弗届,御晨风而返.———— 杰佛瑞 · ...

  7. Regular进阶: 几点性能优化的建议

    本文由作者郑海波授权网易云社区发布. 本文旨在用 20% 的精力解决使用Regular过程中 80% 的性能问题. 这里大部分是关于脏检查的性能优化,不了解的可以先看下<Regular脏检查介绍 ...

  8. 总结常见的违背Rest原则的接口设计做法

    此文已由作者郑华斌授权网易云社区发布. REST这词我们常常挂在嘴边,比如"开发一个rest接口",又比如Spring项目的代码: @RestControllerpublic cl ...

  9. Android Library 使用规则

    1. 一个项目必须声明为 is library.使用该 library 的项目导入该 library. 2. library 的 manifect 中 activity 的声明需明确包名以避免找不到. ...

  10. Luogu1438 无聊的数列(单点查询)&&加强版(区间查询)

    题目链接:戳我 线段树中差分和前缀和的应用 其实对于加上等差数列的操作我们可以分成这样三步-- update(1,1,n,l,l,k); if(r>l) update(1,1,n,l+1,r,d ...