nojimaです。

Takahide Nojima <nojima@taito.co.jp> writes:

>  上の見解に激しく同意します。crontabの内部の行には大したことはあまり
> 書けないと思った方がよいです。

間違いでした。

 bash -c 'xxxx'って相当強力なんですね。

 bash -c 'mkdir /tmp/foo;cd $HOME/doc/foo;for i in *;do xxx $i > /tmp/foo/$i.`date +%y%m%d`;done'

とかあっさり動きました。

#もちろん1行で書きまくった場合、保守の問題等がでてきそうなので、良いかどうか
#は不明。

>   a) プログラムの構造上簡単なコマンドぐらいしかcrontabには書けない
>      ので、ちょっと複雑なこと書こうと思ったらシェルスクリプトにした方が良い。

というわけで、これは嘘となり、RHL9では
全部で1000文字(vixie-cronソース中MAX_COMMANDで定義)以内で収まるなら、

  ・シェルスクリプトでも、
  ・一行で全部かいても

OKとなります。保守の問題など考えなければどちらでも結構かなと。

>   b) コマンドに'%'混っていたらシェルスクリプトにしないとRHL9のcronでは
>      意図どおりに動作しない。(\%してcronの解釈をエスケープできるが、sh -cに
>      \%がそのまま渡ってしまう)

これも嘘で、\%はSHELL=bashの場合、bashによりquoteさえしてなければ%のみに
変換されて解釈されるようです。知らなかった...