我没有得到此输出...请帮助
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
答案 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
。可能还有其他版本。