Macのbashで、


$ 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

とありました。
日時を取得するところの記述がきちんと解釈されていないということだと思いますが・・・。
どのようにすれば解決しますでしょうか?

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2017/01/11 07:33:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

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

Man page of CRONTAB
 * * * * * echo "testttt" > ~/Desktop/`date "+\%Y\%m\%d_\%H\%M\%S"`.log

このへんのわずらわしさを回避するには、短くてもシェルスクリプトでやりたい処理を書いて、それを crontab に指定することです。
そうすれば、後は環境変数の違いだけなので。

id:midnightseminar

ありがとう御座います。
面倒なので、シェルスクリプトに飛ばします。

2017/01/11 07:32:56

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません