在我的一个循环中,我让我的 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。
我能做什么?
最佳答案
转换为秒使这种类型的“算术”变得更容易和更可靠。使用日期的“--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") ))
您还可以使用秒字段进行文件修改比较等,使用“查找”或“统计”的输出。
根据您采取的操作数量,您最好使用组合到 case 语句中。
祝你好运。
关于bash - 如果时间大于 X 小于 Y,在黎明之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17687986/