crontabでdateコマンドの書式文字列の%はエスケープしないと実行されない

ALL
スポンサーリンク

Linuxのcrontabで次のように、date で書式文字列を使うと、実行が失敗します。

 00 14 * * * ls -la > testtest_`date +%Y%m%d_%H%M%S`.log

この時、crontabの実行が失敗したことにより、メール通知の設定がされていれば次の内容のメールが届きます。

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

crontabでは % は改行文字に置き換わるので、\ でエスケープして \% と記述する必要があります。

コマンド中にパーセント記号 (%) が バックスラッシュ () によってエスケープされずに置かれていると、 改行文字に置き換えられ、最初に現れた % 以降の全てのデータは 標準入力としてコマンドに送られる。

https://manpages.ubuntu.com/manpages/jammy/ja/man5/crontab.5.html

コメント