我有两个时间变量。我想在 shell 脚本中的 if 语句中比较它。
例如
time1=HH:MM:SS
和time2=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"