回答:
試しただけで、はい、可能です。この簡単な例でそれを理解できますcrontab
。
FOO = qwerty * * * * * echo $ FOO>〜/ out
ファイルを確認します~/out
(毎分更新されます)"qwerty"
。
Linux crontabはリテラル値を保持するいくつかの変数の定義をサポートしますが、長いテキストを短い表現に圧縮したり、電子メール出力の送信先など、cron自体に関するいくつかのことを制御する以外にはあまり使用しません。
柔軟性は、cronエントリのコマンド部分がVixie cronを使用するシステム(通常Linuxシステムにインストールされるもの)に渡される/bin/sh -c
か、シェルで定義されることを理解していることSHELL
です。これが意味することは、コマンドラインの残りの部分は単純なシェルスクリプトです。注:使用されているシェルを理解してください。/bin/sh
通常/bin/bash
、Linuxでは$( ... )
組み込みコマンドが機能しますが、代わりに/bin/sh
しか理解しない古いシステムでは機能しません`
。
たとえば、保存されたメッセージのMBXファイルを毎月アーカイブし、それを圧縮する簡単なcrontab行があります。次のようになります。
15 0 1 * * nf=MailFeed-$( date +\%Y\%m ).mbx && cd Logs && mv MailFeed.mbx $nf && bzip2 -9 $nf
これは、毎月1日の午前12時15分に実行され、CCYYMMを含む新しいファイル名を設定し、現在のファイルを新しい名前に移動して圧縮します。覚えておくべきことは、エスケープされていない%
(パーセント記号)は改行として扱われ、それに続くデータはパーセント記号の前のコマンドにstdinとして送信されることです。そのため、法線date +Y+m
はdate +\%Y\%m
上記のように書かれています。