質問: シェルで2つの日付を比較する方法は? シェルで2つの日付を比較するにはどうすればよいですか?これはそのままでは機能しませんが、これを使用する方法の例を次に示します。todate=2013-07-18 cond=2013-07-15 if [ $todate -ge $cond ]; then break fi どうすれば望ましい結果を得ることができますか?
回答: この比較がハイフン付きの日付文字列でうまく機能しない理由は、シェルは先行する0を持つ数値が8進数(この場合は月 "07")であると想定するためです。さまざまな解決策が提案されてきましたが、最も速くて簡単なのはハイフンを取り除くことです。 bashには文字列置換機能があり、これをすばやく簡単に実行できるため、比較を算術式として実行できます。todate=2013-07-18 cond=2013-07-15 if (( ${todate//-/} > ${cond//-/} )); then echo larger fi