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

0 linux shell shell-script timestamps

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

例如 time1=HH:MM:SS和time2=HH:MM:SS。

格式为HH:MM:SS.

if [it matched]
then
    echo "matched" 
else
    echo "not matched"
fi
Run Code Online (Sandbox Code Playgroud)

Jef*_*ler 5

如果您想将两个变量的(内容)与特定的 HH:MM:SS 字符串进行比较,则只需将它们与这些字符串进行比较,并使用逻辑“与”( &&)将测试联系在一起:

if [ "$time1" = "01:23:45" ] && [ "$time2" = "01:42:42" ]
then
  echo matched
else
  echo not matched
fi
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用case; 它允许在匹配时间方面具有一定的灵活性,以防您不想匹配特定的 HH:MM:SS。首先,让我们用一个隐含的“和”将这两个时间联系在一起:

time1=01:23:45
time2=01:42:42
case "$time1,$time2" in
  (01:23:45,01:42:42) echo yes;;
esac
Run Code Online (Sandbox Code Playgroud)

在这里,我加了一个逗号,只是为了帮助脚本阅读器了解发生了什么;可以省略。

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

case "$time1,$time2" in
  (01:23:45,01:42:*) echo yes;;
esac
Run Code Online (Sandbox Code Playgroud)

或者,您可能希望 time2 的秒数在某个范围内:

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

您可以从那里扩展示例。