[Linux]-[system] 日付の計算(bash)

  • 投稿日:
  • by
  • カテゴリ:

date(GNU)を使い日付の計算をする。

■使用されると想定される箇所

  • ログやバックアップファイルの管理など

■動作確認

  • Red Hat Linux Advanced Server release 2.1ASの「date(GNU)」コマンドでは出来た

■欠点

  • GNU系のdateコマンドでしか使えない

■利点

  • 複雑な計算式を使わなくてもうるう年を含め計算が出来る
  • 責任をdateコマンドのせいにすることが出来る(笑)

■使い方

1.前日の日付を求める

 -----

 # date --date '1 day ago' +%Y%m%d
 20060613

 -----

 「1 day ago」の部分が一日前と言う意味

 「%Y%m%d」は出力する日付のフォーマット

 結果を変数に入れることも出来る(スクリプト内での例)

 -----

 DATE=`date --date '1 day ago' +%Y%m%d`

 -----

2.入力された日付の前日を求める

 -----

 # date -d '20060301 1 day ago' +%Y%m%d
 20060228

 # date -d '20040301 1 day ago' +%Y%m%d
 20040229

 -----

 「1 day ago」の部分が一日前と言う意味

 「%Y%m%d」は出力する日付のフォーマット

 「20060301」 または「20040301」は入力される日付

 スクリプトの引数で日付を指定し、その日付から前日の日付を出力するスクリプトも作成できる

 -----

 #!/bin/sh

 DATE=`date -d "$1 1 day ago" +%Y%m%d`

 echo ${DATE}

 -----