Ubuntu 14.04 Cron 以 ^M 结尾输出文件名

Pat*_*Pat 5 cron carriage-return ubuntu-14.04

当我使用 > 运算符将输出通过管道传输到 cron 作业中的文件时,它总是在文件名的末尾附加一个 ^M。这显示为 ? 当我在目录中运行 ls 但当我在 nano 中编辑文件并保存时将自身显示为 ^M 。

例如这个命令:

locale > locale.txt
Run Code Online (Sandbox Code Playgroud)

输出一个名为“locale.txt?”的文件 (即“locale.txt^M”)

我不知道它为什么这样做,但我猜它与环境变量有关。当我从终端使用 > 时,它的行为正常。我已经在谷歌上搜索过这个问题,但显然它不喜欢查询中的所有这些特殊字符,所以我什么也没找到。

我试过使用 mv 将文件名改回正常,但它无法识别 ? 或键入文件名时的 ^M 字符。

我已经看到这可能是回车“\r”字符,但我不知道为什么 cron 会在我的文件名末尾放置一个 Windows 换行符。感谢所有帮助。谢谢!

Jon*_*oni 5

问题在于 cron 或脚本文件本身:它具有 DOS 行分隔符 (CRLF) 而不是 Unix(仅 LF)。您可以使用dos2unix.