让我们有3次
time1=11:34:45
time2:12:39:32
target_time:12:45:48
那么如何找到目标时间大于等于time1或者time2呢?
所需输出:
the target time 12:45:48 is greater or equal to 12:39:32
答案1
您可以首先将时间转换为更容易比较的通用格式,例如以秒为单位。
这可以在 bash 函数中像这样完成:
time_to_seconds() {
IFS=: read -r hours minutes seconds <<< "$1"
echo $(( hours * 3600 + minutes * 60 + seconds ))
}
IFS=:
告诉 bash 用冒号分隔字符串,以便可以使用 读取小时、分钟和秒read
。
之后,您可以将时间变量转换为秒,如下所示:
time1_secs=$(time_to_seconds "$time1")
time2_secs=$(time_to_seconds "$time2")
target_time_secs=$(time_to_seconds "$target_time")
那么这只是做事的问题比较, 像这样:
if [ $target_time_secs -ge $time2_secs ]; then
echo "the target time $target_time is greater or equal to $time2"
fi