通过 cron 运行时,sort 和 uniq 命令未按预期运行

通过 cron 运行时,sort 和 uniq 命令未按预期运行

下面是脚本的一部分,它在手动运行时给出正确的输出,但在使用 cron 运行时给出错误的输出:

sort < file1.out | uniq -ic |sort -nr> file2.out

在命令行上运行时,这会给出行分组的计数,忽略大小写,例如:

73 /universal/webselfservice/pdf/r60.pdf

当通过 cron 运行时,计数会根据大小写的不同而分开,例如:

47 /universal/webselfservice/pdf/r60.pdf
26 /universal/webselfservice/pdf/R60.pdf

如何让 cron 输出与命令行行为相匹配?

答案1

cron 下使用的区域设置与交互式环境中的区域设置不同。一个具有不区分大小写的排序规则,而另一个则没有。

这意味着交互地,首先sort放置/universal/webselfservice/pdf/r60.pdf/universal/webselfservice/pdf/R60.pdf相邻,因此uniq -i可以将它们组合起来。但在 cron 使用的语言环境中,它们不相邻,并且单独计数。

有两种简单的方法可以得到你想要的东西:

  1. 将不区分大小写的区域设置指定为 crontab 文件中的环境变量,或者
  2. -f将(或)标志添加--ignore-case到第一个sort.

相关内容