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

时间:2022-01-20 12:27:02

今天在设计嵌入式web服务器的时候,写了一个脚本(在windows平台上写的),shell终端报如下错误:bash: ./cmd.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录

出现这种情况的原因分析:有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为你的脚本文件在windows下编辑过。windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用cat -A urfile时你可以看到这个\r字符被显示为^M,这时候只需要删除这个字符就可以了。可以使用命令sed -i 's/\r$//' urfile 。有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为你的脚本文件在windows下编辑过。windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用cat -A urfile时你可以看到这个\r字符被显示为^M,这时候只需要删除这个字符就可以了。

解决方法:可以使用命令sed -i 's/\r$//' urfile 。