シェルスクリプトで一日前の日付を求める
ログローテーションを行うときに、ファイル名を付けるにあたって、1日前の日付を求める必要があった。
主にこのサイトを参考にシェルスクリプトを組んでみた(http://www.toshikazu.org/archives/000087.html)。
しかし、どうも date コマンドの動作がおかしいようだ。
で、原因を探ってみると、
`date -v-1d +%Y%m%d`
の -v-1d という部分が使用できていないようだ*1。
で、それではどうすれば良いか? ちょっと調べてみた。
方法としてはタイムゾーンを上手いこといじくる方法もあるみたいだったが、なんとなく面倒そうだったので他の方法を探してみると……あった。これはすごい。
date --date '1 day ago'
とすると1日前の日付を表示してくれる。
だもんで、一番上のような状況ではこう書けば良いようだ。
`date --date '1 day ago' +%Y%m%d`
いやー、この手の手段ってきっと需要があるはずだから、お手軽な方法がいくつかあると踏んで調べてみたんだけど、こんな方法があるとはね。
シェルスクリプトは難しいね……。
*1:OSはvine linux 3.2なんだけどね……?