頂き物の月末処理を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は何か高度な書き方が用意されているのだろうか? ・・・いや、複雑な事するならシェルスクリプトを定期的に回しますよね。