シェルスクリプトで時間を比較するには?

シェルスクリプトで時間を比較するには?

2つの時間変数があります。シェルスクリプトのif文で比較したいです。

たとえば time1=HH:MM:SStime2=HH:MM:SS

形式はですHH:MM:SS

if [it matched]
then
    echo "matched" 
else
    echo "not matched"
fi

ベストアンサー1

2つの変数(内容)を特定のHH:MM:SS文字列と比較するには、単にその文字列と比較し、論理的な「and」(&&)を使用してテストを一緒に連結するだけです。

if [ "$time1" = "01:23:45" ] && [ "$time2" = "01:42:42" ]
then
  echo matched
else
  echo not matched
fi

case別のオプションは、特定のHH:MM:SSを一致させたくない場合は、タイミング一致にある程度の柔軟性を可能にする;を使用することです。まず、暗黙の「and」を使って2回接続してみましょう。

time1=01:23:45
time2=01:42:42
case "$time1,$time2" in
  (01:23:45,01:42:42) echo yes;;
esac

スクリプト読者が何が起こっているのかを理解できるように、ここにカンマを挿入しました。

SSここで、time2部分についてあまり気にしないと仮定します。

case "$time1,$time2" in
  (01:23:45,01:42:*) echo yes;;
esac

あるいは、time2の秒が特定の範囲内にあることを望むかもしれません。

case "$time1,$time2" in
  (01:23:45,01:42:4[1-3]) echo yes;;
esac

そこから例を拡張できます。

おすすめ記事