2

在我的一个循环中,我让我的 Bash 脚本根据时间做一些事情:

if [ $(date +%k%M) -ge 2200 ] && [ $(date +%k%M) -lt 2300 ] ; then echo "Betwen 22 and 23!"; fi

但是,我遇到了一个我没想到的问题(尽管我应该有)。当 23:59 变为 00:00 时,if 不起作用。

if [ $(date +%k%M) -ge 2359 ] && [ $(date +%k%M) -lt 200 ] ; then CURRENTFOLDER="$TARGETFOLDER/$BLOCK1"; fi 

200 在数值上小于 2359,但 02:00 晚于 23:59。

我能做些什么?

4

1 回答 1

4

转换为秒使这种类型的“算术”更容易和更可靠。使用日期的 '--date=' 选项指定第二天的窗口:

date --date="Today HH:MM" +"%s"
date --date="+1 day HH:MM" +"%s"

另外,为简单起见,调用一次当前时间并将其用于比较:)

NOW=$(date +"%s")

例子:

(( ${NOW} >= $(date --date="Today 22:00" +"%s") )) && (( ${NOW} < $(date --date="Today 23:00" +"%s") ))

(( ${NOW} >= $(date --date="Today 23:59" +"%s") )) && (( ${NOW} < $(date --date="+1 day 02:00" +"%s") ))

您还可以使用秒字段进行文件修改比较等,使用“查找”或“统计”的输出。

根据您采取的操作数量,您最好使用组合成一个案例语句。

祝你好运。

于 2013-07-16T23:14:43.853 回答