Liunx 执行文件报错: binbash^M 坏的解释器 没有那个文件或目录

    技术2025-08-09  16

    前言

    我有一个定时脚本, 当时呢是在windows 环境下编写的, 编写完成后, crontab 定时去执行这个脚本, 但是在执行这个脚本时, 出错了, 如题一般, 提示当前脚本 是一个坏的解释器.

    解决方法

    出现这个原因呢,是因为我的这个脚本是在windows环境下编写的,导致了换行符不一致导致错误发生 换行结尾符是\n\r,但是在linux下是\n,所以在每个换行的地方会多出来个\r

    首先通过CAT命令查看是否是这样. [root@iZbp1je77jss3x52q752uZ ~]# cat -A 脚本名称

    windows 下编写的脚本查看之后它的换行是以 ^M$ 结尾

    liunx 下编写的脚本 执行结果可以看到, Liunx 系统下 所有换行的结尾都是以 $ 结尾

    2. 所以通过命令将非法字符替换

    # 必须为文件添加执行权限 [root@iZbp1je77jss3x52q752uZ ~]# chmod +x 文件名称 # 通过命令转换非法字符 [root@iZbp1je77jss3x52q752uZ ~]# sed -i 's/\r$//' 文件名称

    替换之后呢, 问题解决, 只 $ 结尾 可以手动执行下文件看看, 是否正常!

    Processed: 0.009, SQL: 9