cronを使って
0 2 * * * * /foo/bar/baz.pl 1日前の日付
みたいなことをやりたかったので
0 2 * * * * /foo/bar/baz.pl `date -v-1d +"%Y-%m-%d"`
とやった。その日の午前2時にこのcronは動いたが、結果はなぜかエラー。次の日に「"」を取って
0 2 * * * * /foo/bar/baz.pl `date -v-1d +%Y-%m-%d`
とやった。その日の午前2時にこのcronは動いたが、結果はやっぱりエラー。/var/log/cronを見てみると、%の前までのものしか実行されていないのがわかった。要するに毎日「/foo/bar/baz.pl `date -v-1d +」というコマンドを実行しようとしていた。%が悪いみたいなので、これをエスケープすればいいのかと思い
0 2 * * * * /foo/bar/baz.pl `date -v-1d +\%Y-\%m-\%d`
とやった。その日の午前2時にこのcronが正常に動いた。訂正:どうやら%は改行として解釈されるということで、shellとは関係ないのが正解。なるへそ。てか%が改行なんてまぎらわしいことこの上ないな…。もっと他の記号となにしろー。