如何比较shell脚本中的时间?

如何比较shell脚本中的时间?

我有两个时间变量。我想在 shell 脚本中的 if 语句中比较它。

例如 time1=HH:MM:SStime2=HH:MM:SS

格式为HH:MM:SS.

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

答案1

如果要将两个变量(的内容)与特定的 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”将两个时间联系在一起:

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

在这里我插入了一个逗号,只是为了帮助剧本读者了解发生了什么;可以省略。

现在假设你不太关心time2的SS部分:

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

您可以从那里扩展示例。

答案2

如果格式相同,只需像其他字符串一样比较它们:

$ [ "$time1" = "$time2" ] && echo "match" || echo "no match"

相关内容