逆引きシェルスクリプト/今日の日付が月末かどうかをdateコマンドで確認する方法
の編集
Top
/
逆引きシェルスクリプト
/
今日の日付が月末かどうかをdateコマンドで確認する方法
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
#navi(../) * 月末かどうか確認する方法・dateコマンド [#ecbcb73a] 月末だけ実行したい処理があるなどの場合、月末は28, 29, 30, 31と4種類あります。~ そこで、dateコマンドを利用して月末を調べる方法を以下に記します。 #contents #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) * 関連資料 [#h713e486] -[[日時の表示フォーマット変更・dateコマンド>逆引きUNIXコマンド/日時の表示フォーマット変更・dateコマンド]] -[[翌日の日付を取得・dateコマンド>逆引きUNIXコマンド/翌日の日付を取得・dateコマンド]] -[[前日の日付を取得・dateコマンド>逆引きUNIXコマンド/前日の日付を取得・dateコマンド]] -[[出力情報に日時情報を付加したい>逆引きUNIXコマンド/出力情報に日時情報を付加したい]] -[[Nヶ月とN日前の日付を取得・dateコマンド>逆引きUNIXコマンド/Nヶ月とN日前の日付を取得・dateコマンド]] -[[UNIX時間に変換・UNIX時間を取得する方法>逆引きUNIXコマンド/UNIX時間に変換・UNIX時間を取得する方法]] -[[マシンの日時を設定・変更する・date, ntpdate>逆引きUNIXコマンド/マシンの日時を設定・変更する・date, ntpdate]] -[[指定したタイムゾーンのローカルタイムを表示する方法・TZ>逆引きUNIXコマンド/指定したタイムゾーンのローカルタイムを表示する方法・TZ]] -[[YYYYMMDDを取得する・date>逆引きUNIXコマンド/YYYYMMDDを取得する・date]] -[[HH:MI:SSを取得する・date>逆引きUNIXコマンド/HH:MI:SSを取得する・date]] * 月末を判別する方法 [#c0457673] 翌日が1日であれば、本日は月末ですよね。~ これを、dateコマンドで再現してみます。~ 以下コマンドで翌日が表示されます。(4つとも同じ動作になります。) date --date '1 day' date --date '+1 day' date -d '1 day' date -d '+1 day' これで翌日の日時が表示されます。 実行結果は以下のようになります。 [sakura@centos ~]$ date 2012年 5月 22日 火曜日 11:04:12 JST [sakura@centos ~]$ date --date '1 day' 2012年 5月 23日 水曜日 11:04:14 JST [sakura@centos ~]$ date --date '+1 day' 2012年 5月 23日 水曜日 11:04:14 JST [sakura@centos ~]$ date -d '1 day' 2012年 5月 23日 水曜日 11:04:14 JST [sakura@centos ~]$ date -d '+1 day' 2012年 5月 23日 水曜日 11:04:14 JST 日付だけを取得したのいので+%dオプションを利用します。~ manコマンドでdateコマンドを確認すると以下の記述があります。 日付フィールド <省略> %d 月内通算日数 (01..31) <省略> したがって、+%dを利用することにより、翌日の日付のみを取得できます。~ 以下のようになります。 date --date '1 day' +%d 実行結果は以下のようになります。 [sakura@centos ~]$ date 2012年 5月 22日 火曜日 11:08:18 JST [sakura@centos ~]$ date +%d 22 [sakura@centos ~]$ date --date '1 day' +%d 23 * シェルスクリプトに組み込む [#ec681861] 以下のサンプルスクリプトのようにdateコマンドから返却された値が1だった場合、月末となります。 #ref(chk-eom.sh) #!/bin/bash nextday=`date --date '1 day' +%d` if [ $nextday -eq 1 ]; then echo `date +%Y/%m/%d` is end of the month. else echo `date +%Y/%m/%d` is *NOT* end of the month. fi 実行結果 [sakura@centos ~]$ date 2012年 5月 30日 水曜日 11:16:30 JST [sakura@centos ~]$ ./chk-eom.sh 2012/05/30 is *NOT* end of the month. [sakura@centos ~]$ date 2012年 5月 31日 木曜日 11:17:01 JST [sakura@centos ~]$ ./chk-eom.sh 2012/05/31 is end of the month. #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
タイムスタンプを変更しない
#navi(../) * 月末かどうか確認する方法・dateコマンド [#ecbcb73a] 月末だけ実行したい処理があるなどの場合、月末は28, 29, 30, 31と4種類あります。~ そこで、dateコマンドを利用して月末を調べる方法を以下に記します。 #contents #htmlinsertpcsp(linux_ads_top.html,linux-sp.html) * 関連資料 [#h713e486] -[[日時の表示フォーマット変更・dateコマンド>逆引きUNIXコマンド/日時の表示フォーマット変更・dateコマンド]] -[[翌日の日付を取得・dateコマンド>逆引きUNIXコマンド/翌日の日付を取得・dateコマンド]] -[[前日の日付を取得・dateコマンド>逆引きUNIXコマンド/前日の日付を取得・dateコマンド]] -[[出力情報に日時情報を付加したい>逆引きUNIXコマンド/出力情報に日時情報を付加したい]] -[[Nヶ月とN日前の日付を取得・dateコマンド>逆引きUNIXコマンド/Nヶ月とN日前の日付を取得・dateコマンド]] -[[UNIX時間に変換・UNIX時間を取得する方法>逆引きUNIXコマンド/UNIX時間に変換・UNIX時間を取得する方法]] -[[マシンの日時を設定・変更する・date, ntpdate>逆引きUNIXコマンド/マシンの日時を設定・変更する・date, ntpdate]] -[[指定したタイムゾーンのローカルタイムを表示する方法・TZ>逆引きUNIXコマンド/指定したタイムゾーンのローカルタイムを表示する方法・TZ]] -[[YYYYMMDDを取得する・date>逆引きUNIXコマンド/YYYYMMDDを取得する・date]] -[[HH:MI:SSを取得する・date>逆引きUNIXコマンド/HH:MI:SSを取得する・date]] * 月末を判別する方法 [#c0457673] 翌日が1日であれば、本日は月末ですよね。~ これを、dateコマンドで再現してみます。~ 以下コマンドで翌日が表示されます。(4つとも同じ動作になります。) date --date '1 day' date --date '+1 day' date -d '1 day' date -d '+1 day' これで翌日の日時が表示されます。 実行結果は以下のようになります。 [sakura@centos ~]$ date 2012年 5月 22日 火曜日 11:04:12 JST [sakura@centos ~]$ date --date '1 day' 2012年 5月 23日 水曜日 11:04:14 JST [sakura@centos ~]$ date --date '+1 day' 2012年 5月 23日 水曜日 11:04:14 JST [sakura@centos ~]$ date -d '1 day' 2012年 5月 23日 水曜日 11:04:14 JST [sakura@centos ~]$ date -d '+1 day' 2012年 5月 23日 水曜日 11:04:14 JST 日付だけを取得したのいので+%dオプションを利用します。~ manコマンドでdateコマンドを確認すると以下の記述があります。 日付フィールド <省略> %d 月内通算日数 (01..31) <省略> したがって、+%dを利用することにより、翌日の日付のみを取得できます。~ 以下のようになります。 date --date '1 day' +%d 実行結果は以下のようになります。 [sakura@centos ~]$ date 2012年 5月 22日 火曜日 11:08:18 JST [sakura@centos ~]$ date +%d 22 [sakura@centos ~]$ date --date '1 day' +%d 23 * シェルスクリプトに組み込む [#ec681861] 以下のサンプルスクリプトのようにdateコマンドから返却された値が1だった場合、月末となります。 #ref(chk-eom.sh) #!/bin/bash nextday=`date --date '1 day' +%d` if [ $nextday -eq 1 ]; then echo `date +%Y/%m/%d` is end of the month. else echo `date +%Y/%m/%d` is *NOT* end of the month. fi 実行結果 [sakura@centos ~]$ date 2012年 5月 30日 水曜日 11:16:30 JST [sakura@centos ~]$ ./chk-eom.sh 2012/05/30 is *NOT* end of the month. [sakura@centos ~]$ date 2012年 5月 31日 木曜日 11:17:01 JST [sakura@centos ~]$ ./chk-eom.sh 2012/05/31 is end of the month. #htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
テキスト整形のルールを表示する
添付ファイル:
chk-eom.sh
528件
[
詳細
]