我从bash脚本运行以下命令:
comm -23 file1 file2 > file3
(file1
& file2
先被删除并排序)
这会产生一个file3
,其中只包含file1
唯一的行(我想要的)。
从命令行运行脚本时,没有问题。但是,当它从crontab
运行时,会产生更大(不正确)的file3
。 crontab
用户与手动运行时的登录用户相同。
任何导致这种差异的线索?
提前致谢
答案 0 :(得分:2)
从shell运行的程序与cron
内的程序之间几乎所有的差异都与环境有关。
要做的第一件事就是在两个地方运行类似env
的内容并捕获输出。它可能像运行不同的可执行文件一样简单,因为路径不同。
另一种可能性是LC_COLLATE
设置在两种环境之间是不同的。来自info
页面:
在使用
comm
之前,必须使用LC_COLLATE
区域设置指定的整理顺序对输入文件进行排序。
--check-order
选项可能是一种检查方式,导致未排序输入时出现致命错误(包括根据您认为正在使用的不同排序规则进行排序)。