0

当我从 shell(tcsh) 运行这个命令时,它执行得很好——

cal | tail -6 | sed -e 's/^.\{3\}//' -e 's/.\{3\}$//' | tr -s '[:blank:]' '\n' | head -21 | tail -20 | tr -s '\n' ' ' | grep -w `date "+%e"` ; /usr/bin/bash -lc "if [ "$?" == 0 ] ; then echo xyz ; fi"

但是当我把完全相同的东西放在一个 crontab 中时,我从我的机器上收到了这个错误邮件——

Subject: Output from "cron" command
Content-Length: 244

Your "cron" job on uatserver
cal | tail -6 | sed -e 's/^.\{3\}//' -e 's/.\{3\}$//' | tr -s '[:blank:]' '\n' | head -21 | tail -20 | tr -s '\n' ' ' | grep -w `date "+

produced the following output:

Usage: grep -hblcnsviw pattern file . . .

我确信即使是我的 crontab 命令也是使用 tcsh 执行的,因为它被设置为默认值。

ps-我的机器: SunOS uatserver 5.10 Generic_127112-11 i86pc i386 i86pc

4

1 回答 1

2

您的问题是 PATH 变量不一样。Solaris 有不同风格的 grep 示例:

/usr/bin/grep /usr/xpg4/bin/grep

你 crontab 运行 /usr/bin/grep 而不是 /usr/xpg4/bin/grep。两个版本的 grep 有一些不同的选项。

于 2012-11-21T11:34:11.373 回答