人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: midnightseminar
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

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

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

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


midnightseminarさんのコメント
ありがとう御座います。 面倒なので、シェルスクリプトに飛ばします。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ