Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录

柔光的暖阳◎ 2023-06-07 10:37 41阅读 0赞
  1. 今天在将windows下的脚本文件通过scp命令,发送到远程服务器上,在执行过程中遇得到了这个问题
  2. ./sh.sh
  3. -bash: ./sh.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
  4. 原因分析:windows下,每一行的结尾是\\n\\r,而在linux下文件的结尾是\\n,那么在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\\r,用cat -A urfile时你可以看到这个\\r字符被显示为^M,这时候只需要删除这个字符就可以了,可以使用命令 sed -i s/\\r$//’ filename。
  5. cat -A sh.sh
  6. #!/bin/bash^M$
  7. # ^M$
  8. ^M$
  9. echo "Hello World"^M$
  10. sed -i 's/\r//' sh.sh
  11. ./sh.sh
  12. Hello World
  13. 你好

发表评论

表情:
评论列表 (有 0 条评论,41人围观)

还没有评论,来说两句吧...

相关阅读