bash - 如果时间大于 X 小于 Y,在黎明之间?

标签 bash date if-statement time

在我的一个循环中,我让我的 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/

相关文章:

linux - 如何将命令输出作为多个参数传递给另一个命令

python - 如何计算每日用户差异并 reshape pandas 数据框?

javascript - 使用 Moment.js 格式化后收到非预期日期

java - 基本的java if子句问题

bash - 在 bash 中的 while 循环中添加超时命令时出错

mysql - CentOS 在 MySQL 服务停止时重新启动的脚本

javascript - 如何使用javascript为给定日期添加年份

javascript - 比较 2 个数组以输出总整数

php - if语句在连接中间?

linux - 当我尝试用空格替换新行、制表符和连续空格时,字符 'a' 被删除