cronでの%をエスケープ

表題の件について。久しぶりになんだっけこれ?とハマったのでメモ。

■ 環境

  • Ubuntu 16.04

■ cron

`cron`で実行されるジョブの中で`date`で日付を入れた処理をいれたらうまく実行してくれなかった。例えば下記のような感じのジョブとする。

crontab -l
0 1 * * * touch /tmp/`date --date '-1 day' +'%Y%m%d'`.txt
$

これは失敗する。下記のようなメールが飛んでいた。

/bin/sh: 1: Syntax error: EOF in backquote substitution

`date`等の”%“はエスケープする必要がある。下記のように書かなければならない。

crontab -l
0 1 * * * touch /tmp/`date --date '-1 day' +'\%Y\%m\%d'`.txt
$

なんかいつも同じ間違いをしている気がするので自戒のためにメモ。

以上。