$ echo "testttt" > ~/Desktop/`date "+%Y%m%d_%H%M%S"`.log
というのを実行すると、意図どおり、デスクトップに"20170110_225212.log"といったファイルが生成されるのですが、これをcrontabに、
* * * * * echo "testttt" > ~/Desktop/`date "+%Y%m%d_%H%M%S"`.log
というジョブとして登録して実行した場合、エラーになります。
mailへ返ってきているメッセージをみると、
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
とありました。
日時を取得するところの記述がきちんと解釈されていないということだと思いますが・・・。
どのようにすれば解決しますでしょうか?
「第 6」フィールド (行の残りの部分) には実行されるコマンドを指定する。 その行のコマンド部 (改行文字または % 文字まで) が /bin/sh (またはその crontab ファイルの SHELL 環境変数で指定されたシェル) によって実行される。 コマンド中にパーセント記号 (%) が バックスラッシュ (\) によってエスケープされずに置かれていると、 改行文字に置き換えられ、最初に現れた % 以降の全てのデータは 標準入力としてコマンドに送られる。
Man page of CRONTAB
* * * * * echo "testttt" > ~/Desktop/`date "+\%Y\%m\%d_\%H\%M\%S"`.log
このへんのわずらわしさを回避するには、短くてもシェルスクリプトでやりたい処理を書いて、それを crontab に指定することです。
そうすれば、後は環境変数の違いだけなので。
ありがとう御座います。
2017/01/11 07:32:56面倒なので、シェルスクリプトに飛ばします。