在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

[html] view plaincopy
  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

说明:

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

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

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

    编写shell脚本时,我们经常习惯在windows下写好,然后通过共享目录拷到linux下,方便快捷. 杯具的事也来了,当我们在windows写一个shell程序拷到linux中,修改好权限,正准备试 ...

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

    这个问题一般是windows编辑shell文件后,拷贝到Linux发生的错误. 原因是在Windows下每一行结尾是\n\r,而Linux下则是\n,所以才会有 多出来的\r 解决方案 执行命令修复, ...

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

    文件在Windows 下编辑过,Windows每行结尾\n\r,Linux是\n,有多出来的\r 使用指令 sed -i 's/\r$//' name.sh 上面的指令会把 name.sh 中的\r ...

  4. linux -bash: ./startup.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录

    有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为脚本文件在windows下编辑过.在windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编 ...

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

    项目场景: ./startup.sh启动springboot项目 问题描述: 原因分析: 原因:脚本文件是在Windows环境下编辑的,windows环境下,每一行的结尾是\n\r,而Linux环境下 ...

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

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

  7. 【解决】/bin/bash^M: 坏的解释器: 文本文件忙

    在Linux系统执行脚本命令时 报错:/bin/bash^M: 坏的解释器: 文本文件忙  看到很多小伙伴在linux环境下(搭建redis集群)时执行脚本命令都遇到了这个错误 Docker搭建red ...

  8. Linux shell 脚本报错:/bin/bash^M: bad interpreter: No such file or directory

    今天遇到一个很诡异的问题,一直运行很正常的shell脚本失败了,只是昨天增加了一个参数而已. 报错信息: /bin/bash^M: bad interpreter: No such file or d ...

  9. shell脚本报错:-bash: xxx: /bin/sh^M: bad interpreter: No such file or directory

    今天写了一个shell脚本,然后在执行的时候报错,脚本内容很简单,仅供测试: Shell代码   #!/bin/sh echo "test shell " 具体报错信息如下: Sh ...

最新文章

  1. 解决:未找到setenv命令
  2. 设计模式 之 装饰者模式
  3. mysql按字段多条组合_MySQL按分组把字段值组合成一个结果
  4. Spring实战6-利用Spring和JDBC访问数据库
  5. LeetCode之Construct the Rectangle
  6. ant 改变表格数据_表格技巧—Excel表格怎么替换数字
  7. 微信发卡小程序源码-自动发卡小程序源码-带流量主功能
  8. Dubbo源码分析系列-Dubbo的动态编译原理
  9. linux进程map,linux内存优化一文中 查看进程mem_map 的实现
  10. lottie动画_设计师和程序员的动画还原神器Lottie+Bodymovin
  11. gimp 抠图_gimp抠图教程:gimp快速实现抠图效果
  12. 数学分析教程(科大)——1-(1~10)小节
  13. ARP协议ICMP协议
  14. window10 安装Java11 并可以和Java8进行自由切换
  15. linux调整逻辑卷大小,调整Linux逻辑卷大小
  16. Excel 里筛选手机号码所属运营商
  17. 安卓用ffmeg解码
  18. 简单网页制作的一些基础格式
  19. Win10电脑如何进行内存诊断?教程来了
  20. 从零开始编写minecraft光影包(6)天空绘制

热门文章

  1. 安装Fedora 15后需做的25件事情
  2. 附加到IIS进程调试页面
  3. Matlab的File菜单功能图解 - 导入数据、保存工作空间、搜索路径、系统参数
  4. asp.net ashx 学习总结
  5. 资源文件相关学习总结
  6. Hibernate调用存储过程
  7. P2774 方格取数问题
  8. 常见的java异常——java.lang.IllegalStateException: Ambiguous handler methods mapped for HTTP path...
  9. 九度oj 题目1078:二叉树遍历
  10. Android的第一个程序