20110929220052

Cron Cron

頂き物の月末処理をcrontab (vixie-cron) にて妙なことに気づく。下記の処理は28日から31日の間、毎日翌日が1日である事をチェックさせて、該当する場合にコマンドを実行する。28-31のちょっとした工夫がちょっと好み。しかし、

55 23 28-31 * * /usr/bin/test $(date -d '+1 day' '+%_d') -eq 1 && [Command]

とすると

/bin/sh: -c: line 0: unexpected EOF while looking for matching `)'
/bin/sh: -c: line 1: syntax error: unexpected end of file

このようなエラーが出てしまう。なんぞ・・・で、正解を書くと

55 23 28-31 * * /usr/bin/test $(date -d '+1 day' '+\%_d') -eq 1 && [Command]

"%"についてはエスケープをしなければならないらしい。Cronにて%を使った何か特殊な書き方があるのだろうか。いや、しかしそれでも''や""で括ったものについては無視をして頂きたいところなのですが・・・何にしても妙なところでエスケープが必要な事に気づき驚く。もしかしてvixie-cronは何か高度な書き方が用意されているのだろうか? ・・・いや、複雑な事するならシェルスクリプトを定期的に回しますよね。


Posted by uso8000k | Categories: Tech | [ツィート(笑)] | [2011/09/29/T22_00_52/]