前言
我有一个定时脚本, 当时呢是在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$//' 文件名称
替换之后呢, 问题解决, 只 $ 结尾
可以手动执行下文件看看, 是否正常!