Linux dateコマンドTips(CentOS , Ubuntu)
AmazonLinux_CentOS,bash,Ubuntu(WSL)
前提条件
- 今回は、シェルスクリプトの変数にdateで取得した値を使用する場合のTipsをご紹介します。
- 一般的なLinuxコマンドのため、CentOS, Ubuntuで使用可能です。
コマンドのサンプル
- dateコマンドは、"+フォーマット“の指定で結果の出力を制御できます。
- 今日をYYYYMMDD(年月日を8桁の数字)にて表す。
$ date '+%Y%m%d'
20190908
- 今日から5日後をYYYYMMDD(年月日を8桁の数字)にて表す。
$ date --date "5 days" '+%Y%m%d'
20190913
- 昨日、一昨日をYYYYMMDD(年月日を8桁の数字)にて表す。
$ date --date "1 days ago" '+%Y%m%d'
20190907
$ date --date "2 days ago" '+%Y%m%d'
20190906
- 今日から1ヶ月後をYYYYMMDD(年月日を8桁の数字)にて表す。
$ date --date "1 month" '+%Y%m%d'
20191008
- 今日から3ヶ月前をYYYYMMDD(年月日を8桁の数字)にて表す。
$ date --date "3 month ago" '+%Y%m%d'
20190608
- 来月1日(今月1日の1ヶ月後)をYYYYMMDD(年月日を8桁の数字)にて表す。
$ date --date "`date '+%Y/%m/01'` 1 month" '+%Y%m%d'
20191001
- 先月末(今月1日の1日前)をYYYYMMDD(年月日を8桁の数字)にて表す。
$ date --date "`date '+%Y/%m/01'` 1 days ago" '+%Y%m%d'
20190831
シェルスクリプトのサンプル
- シェルスクリプトのサンプルです。変数に、前述の方法を使いdateコマンドの結果を代入します。今回は取り出した日付に、一律9時をセットするため"09″を付加します。
- DAYBFRYESTDには一昨日の9時、YESTDには昨日の9時、TODAYには今日の9時、ENDOF_LSTMTHには先月末の9時を代入します。
- コマンドの実行結果を変数に代入するため、バッククオートを使用しています。ENDOF_LSTMTHはコマンドの入れ子となりますが、バッククオートのダブルはエラーとなるため、$( ) を使います。
DAYBFRYESTD=`date --date "2 days ago" '+%Y%m%d'`09
YESTD=`date --date "1 days ago" '+%Y%m%d'`09
TODAY=`date '+%Y%m%d'`09
ENDOF_LSTMTH=$(date --date "`date '+%Y/%m/01'` 1 days ago" '+%Y%m%d')09