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

Ubuntu 14.04 Cron outputs file names with ^M at the end

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

例如这个命令:

locale > locale.txt

输出名为 "locale.txt?" 的文件(即 "locale.txt^M")

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

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

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

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

修复它