如何将小时与bash中的字符串/数字进行比较?

时间:2016-08-08 12:28:20

标签: bash

我们有一台服务器用于运行我们的扩展程序(适用于Chrome和Firefox)的Selenium测试。我们每2小时进行一次Selenium测试。我想在14:00之后比14:00之前进行不同的测试。我有这个变量:

start_hour=`TZ='Asia/Tel_Aviv' date +"%H"`

我知道如何将它与特定时间进行比较,例如08:00 AM(它是一个字符串):

if [ "$start_hour" = "08" ]; then
    ...
fi

但是如何检查此变量是否显示在14:00(包括14:00)或14:00之前的一小时?我可以比较bash中的字符串以及如何?我只想检查$start_hour是否> =" 14"或不是?

如果我想在08:00 AM之前或之前检查,答案会有所不同吗?

1 个答案:

答案 0 :(得分:4)

要执行大于或小于比较,test操作-gt-le-ge-le存在。

start_hour=$(TZ='Asia/Tel_Aviv' date '+%k')
[ "$start_hour" -ge 8 ]

请注意使用%k vs %H8 vs 08 - 前导0可以防止您的号码被解释为十进制。

同样,在本机bash语法中,对于数字比较:

start_hour=$(TZ='Asia/Tel_Aviv' date '+%k')
(( start_hour >= 8 ))

如果您的shell是bash,并且不是 / bin / sh,并且您确实需要进行ASCII排序字符串比较,则可以在里面使用>< [[ ]]

start_hour=$(TZ='Asia/Tel_Aviv' date '+%H')
[[ $start_hour > 08 || $start_hour = 08 ]]