在我的一个循环中,我让我的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。
我该怎么办?
答案 0 :(得分:4)
转换为秒使这种“算术”更容易,更可靠。使用date的'--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") ))
您还可以使用秒字段进行文件修改比较等,使用'find'或'stat'的输出。
根据您采取的操作数量,您最好结合使用案例陈述。
祝你好运。