@kyanny's blog

My thoughts, my life. Views/opinions are my own.

アー腹立つ

  • crontab のなかで --date=`date +%Y-%m-%d` とかやると失敗する。 % をエスケープしないといけない。なんだそりゃ。なんで普通のシェルと違うの? Wikipedia に書いてあるのに Manpage の邦訳には見あたらなかったぞ??
  • Date::Calc の Add_Delta_Days に 2008-12-02 って日付を分解して渡して join "-", Add_Delta_Days('2008', '12', '01', -1) みたくすると得られるのが 2008-12-1 って、ふざけんなぼけー。

軽くていいかと思ったけど、もう二度と Date::Calc なんて使わない。最初から DateTime を使っておけばこんな時間に仕事せずに済んだものを。腹痛くていますぐ横になりたいのに。

追記

crontabとかDate::Calcについて - no strict; no life;

man に書いてあるそうです。

「第 6」フィールド (行の残りの部分) には実行されるコマンドを指定する。 その行のコマンド部 (改行文字または % 文字まで) が /bin/sh (またはその crontab ファイルの SHELL 環境変数で指定されたシェル) によって実行される。 コマンド中にパーセント記号 (%) が バックスラッシュ (\) によってエスケープされずに置かれていると、 改行文字に置き換えられ、最初に現れた % 以降の全てのデータは 標準入力としてコマンドに送られる。

http://www.linux.or.jp/JM/html/cron/man5/crontab.5.html

アーほんとうだ。このページ何度も見た覚えがあるのに、チョット上にかいてある表しかみてなかった。。

あと Date::Calc が '01' って返したらそっちのほうが変だよね、という話は、ごもっともです。