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/xpg4/bin/grep の代わりに /usr/bin/grep を実行しました。2 つのバージョンの grep には、いくつかの異なるオプションがあります。

于 2012-11-21T11:34:11.373 に答える