私は次のような日付のいくつかのバリエーションで遊んでいました
DATE = $(date)
それでもうまくいきませんでした
crontab -e
CRONLOG=/tmp/log/crontab.log
DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S`
* * * * * echo $DATEVAR >> /tmp/log/crontab.log
*/2 * * * * echo "$DATEVAR hello" >> ${CRONLOG}
*/1 * * * * echo 'every minute' >> ${CRONLOG}
これはテキストをそのまま出力します...
各更新のタイムスタンプを含むログエントリをcrontab.logに作成したい
CentOS 6でこれを行うにはどうすればよいですか?
[〜#〜]更新[〜#〜]
DATEVAR=date +20%y%m%d_%H%M%S
*/1 * * * * /bin/echo [CRON] $($(DATEVAR)) >> /tmp/log/crontab.log
[CRON]のみをレンダリングし、試したときに何もしない= /
Cronはシェルではありません-シェルと同じようにコマンドを解析しません。したがって、変数は静的テキストであるかのように割り当てられます。
この問題に対して私が知っている3つの解決策があります。
オプション1:シェルスクリプトを使用してコマンドを生成し、必要な変数とロジックを含めて、そのシェルスクリプトをcronから呼び出します。
* * * * * /path/to/myscript.sh
myscript.sh:
DATEVAR=`date +20\%y\%m\%d_\%H\%M\%S`
echo $DATEVAR >> /tmp/crontab.log
オプション2:コマンドに直接dateコマンドを含めます。コマンド全体がシェルに渡されるため、日付が処理され、実際の日付に置き換えられます。
* * * * * /bin/echo `date +20\%y\%m\%d_\%H\%M\%S` >> /tmp/crontab.log
オプション3:文字列変数をcronで設定し、コマンドに渡して処理します(注-パーセント記号はエスケープする必要がなく、変数自体を$()でラップして別のシェルで実行します-バックティックは同じように動作するはずです):
DATEVAR=date +20%y%m%d_%H%M%S
* * * * * /bin/echo $($DATEVAR) >> /tmp/crontab.log
(上記のすべてのケースで、もちろん、「ハードコーディング」する代わりに、ログパスの変数を使用できます。)