使用if循环进行unix日期比较

时间:2015-08-11 08:55:02

标签: unix sh unix-timestamp

我没有得到此输出...请帮助

now=$(date +"%T")
echo "Current time : $now"


if [ $now -gt '01:20:50' ]
then
echo "time is greater.. send mail to me"
else
echo "time is less.. send mail to all"

fi

1 个答案:

答案 0 :(得分:1)

据我所知,您无法直接在sh或bash中将日期格式与-gt / -lt进行比较。如果您真的想要,可以试试dateutils

否则,您应该考虑使用自纪元以来的秒数时间格式(自1970年1月1日00:00:00以来的秒数),因为这是整数。这可以这样做

[]

此外,这是否有效还取决于您的shell,操作系统,尤其是您的日期版本。我验证它适用于Linux 4.0上的bash 4.3.33,日期来自GNU coreutils 8.23,但是例如不适用于FreeBSD 9.0,本机日期(因为-d选项在那里定义不同);相应的行必须是now=$(date +"%T") now_seconds=$(date +"%s") #gives time in seconds since epoch comparison_time=$(date -d '01:20:50' +"%s") echo "Current time : $now" echo "Current time : $now_seconds" echo "Bench time : $comparison_time" if [ $now_seconds -gt $comparison_time ] then echo "time is greater.. send mail to me" else echo "time is less.. send mail to all" fi 。可能还有其他版本。