下面是脚本的一部分,它在手动运行时给出正确的输出,但在使用 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 使用的语言环境中,它们不相邻,并且单独计数。
有两种简单的方法可以得到你想要的东西:
- 将不区分大小写的区域设置指定为 crontab 文件中的环境变量,或者
-f
将(或)标志添加--ignore-case
到第一个sort
.