Cocoon-Engine

甘党インフラエンジニアの技術ブログ

Chocolat Chocolat Chocolat Chocolat

IT技術とスイーツに興味がある方、ちょっと見ていきませんか?

【Linux】 date コマンドで1日前の日付を変数に取りたい!を実現

シェルスクリプトで前日分のログを取得したいときなどに、今日ではない日付を変数として取得しておきたい場合があります。
単純な date コマンドだけで解決することがほとんどですが、/YYYY/MM/DD として分離する場合などは多少工夫が必要です。

基本のパターン。ほとんどはこれで解決。

今日の日付
[test@localhost ~]$ TODAY=$(date +%Y%m%d)
[test@localhost ~]$ echo "$TODAY"
20240612
[test@localhost ~]$


昨日の日付
[test@localhost ~]$ YESTERDAY=$(date -d "1 day ago" +%Y%m%d)
[test@localhost ~]$ echo "$YESTERDAY"
20240611
[test@localhost ~]$ 

 

/var/log/YYYY/MM/DD 等でアーカイブを残している場合などは YYYY, MM, DD それぞれを変数に入れたほうが楽なので、

TODAY を基準にしてそれぞれの値を取得していく。

[test@localhost ~]$ TODAY=$(date +%Y%m%d)
[test@localhost ~]$ YESTERDAY=$(date -d "$TODAY 1 day ago" +%Y%m%d)
[test@localhost ~]$ echo "$YESTERDAY"
20240611
[test@localhost ~]$ 
[test@localhost ~]$ YESTERDAY_YEAR=$(date -d "$TODAY 1 day ago" +%Y)
[test@localhost ~]$ YESTERDAY_MONTH=$(date -d "$TODAY 1 day ago" +%m)
[test@localhost ~]$ YESTERDAY_DAY=$(date -d "$TODAY 1 day ago" +%d)
[test@localhost ~]$ 
[test@localhost ~]$ echo "$YESTERDAY_YEAR"
2024
[test@localhost ~]$ echo "$YESTERDAY_MONTH"
06
[test@localhost ~]$ echo "$YESTERDAY_DAY"
11
[test@localhost ~]$ 

 

これで年初や月初の処理も対応ばっちりです。

[test@localhost ~]$ TODAY=$(date -d '2024-01-01' +%Y%m%d)
[test@localhost ~]$ echo "$TODAY"
20240101
[test@localhost ~]$ 
[test@localhost ~]$ YESTERDAY_YEAR=$(date -d "$TODAY 1 day ago" +%Y)
[test@localhost ~]$ YESTERDAY_MONTH=$(date -d "$TODAY 1 day ago" +%m)
[test@localhost ~]$ YESTERDAY_DAY=$(date -d "$TODAY 1 day ago" +%d)
[test@localhost ~]$ 
[test@localhost ~]$ echo "$YESTERDAY_YEAR"
2023
[test@localhost ~]$ echo "$YESTERDAY_MONTH"
12
[test@localhost ~]$ echo "$YESTERDAY_DAY"
31
[test@localhost ~]$ 

 

気に入ったらぜひ共有してください。

TOP