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

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}

 -----

?

  • entry787ツイート
  • Google+

PageTop