我有一份由 cron 执行的夜间报告,其中包含以下几行:
PRINTFX="/usr/bin/printf"
<snip>
${PRINTFX} "%-11s %-11s %'d\n" ${F1} ${F2} ${F3}
crontab 条目:
[ca-adm@homwpspect01 ~]$ crontab -l
55 01 * * * /usr/local/sbin/CRONSQLEvents
我的问题是,如果我以 root 身份手动运行它(即使用我的登录环境设置),我会得到这个 [CORRECT] 输出:
Date Event Count
2013-02-19 0x00010802 516,616
2013-02-19 0x00010D66 351,840
2013-02-19 0x00010D67 351,533
当 cron 作为另一个用户运行时,我得到 [InCorrect]:
Date Event Count
2013-02-19 0x00010802 516616
2013-02-19 0x00010D66 351840
2013-02-19 0x00010D67 351533
如果它由 cron 运行,则数字输出中缺少逗号。我记得读过一些关于 printf 的使用模棱两可的东西,因为有一个 bash 内部函数,但 /usr/bin 中也有一个外部函数:
[root@homwpspect01 sbin]# which printf
printf is a shell builtin
printf is /usr/bin/printf
有人能告诉我如何避免 cron 与登录执行的这个问题吗?特别是考虑到我无论如何都在脚本中指定 /usr/bin/printf ?
在此先感谢,唐