bashでスラッシュ区切りの日付を簡単に比較する方法
お得意のプログラミング言語では、簡単に 日付 比較 するための関数が用意されていますが、 Linux の シェル スクリプト ( bash )となると、 日付 の方は 文字列 なのか 数値 なのか、 if 文 比較 するために使用する 比較演算子 は何かさっぱり分からず詰まってしまったためメモします。 スラッシュ区切りの日付 まずは date を利用して、 日付 の フォーマット を YYYY/MM/DD で 変数 に格納します。 これも書き方がいっぱいあって困りました。 とりあえず代表的なのを2つだけ書いておきます。 # フォーマットは「'」や「"」で囲んでも良し。 TODAY=`date +%Y/%m/%d` # バッククオートの代わりに$()で囲む? TODAY=$(date +%Y/%m/%d) 違いがよくわからないので、詳しい方はコメントください。 前日や翌日の日付を取得する 余談ですが、 date の -d ( —date ) オプション を使って、 1日前 や 1日後 といった 日付 の取得方法もメモしておきます。 # 前日(1日前) YESTERDAY=`date +%Y/%m/%d -d "yesterday"` YESTERDAY=`date +%Y/%m/%d -d "1 day ago"` YESTERDAY=`date +%Y/%m/%d -d "1 days ago"` # 翌日(1日後) TOMORROW=`date +%Y/%m/%d -d "tomorrow"` TOMORROW=`date +%Y/%m/%d -d "1 day"` TOMORROW=`date +%Y/%m/%d -d "1 days"` if文で日付を比較 if 文の書き方がイマイチわからなくて、1番詰まったところです。 端的に言うと、 文字列 と 数値 の 比較演算子 が異なること。 そして、 括弧 の使い方もよくわかっていません。 比較演算子 例えば、AとBが同じかを調べる場合、 文字列 なら「 = 」を使いますが、 数値 なら「 -eq 」となります。 また、 数値 で大小を...