Linux 想要操纵date命令来计算今天之后的未来吗

Linux 想要操纵date命令来计算今天之后的未来吗,linux,bash,date,unix,Linux,Bash,Date,Unix,我在一个警报脚本中使用了这段代码,在过去一年左右的时间里,我成功地使用了这段代码。但它总是被限制在这样的意义上,如果我指定一个警报持续时间超过午夜,超过23:59,那么警报就会立即响起 这不是一个问题b/c大多数时候我只是设置了一个1,5,10,30或45分钟的闹钟作为快速提醒。但现在,如果需要的话,我想将功能扩展到一天之外,我确信这段代码需要修改: sleep $(( $(date --date="$at" +%s) - $(date +%s) )); 通过首次运行: 15:10 ~ $ $

我在一个警报脚本中使用了这段代码,在过去一年左右的时间里,我成功地使用了这段代码。但它总是被限制在这样的意义上,如果我指定一个警报持续时间超过午夜,超过23:59,那么警报就会立即响起

这不是一个问题b/c大多数时候我只是设置了一个1,5,10,30或45分钟的闹钟作为快速提醒。但现在,如果需要的话,我想将功能扩展到一天之外,我确信这段代码需要修改:

sleep $(( $(date --date="$at" +%s) - $(date +%s) ));
通过首次运行:

15:10 ~ $ $(( $(date --date="23:59" +%s) - $(date +%s) )) ; date
bash: 31706: command not found
Sat Jul 12 15:10:34 ICT 2014
我知道到晚上11点59分还有31706秒。然后:

15:10 ~ $ $(( $(date --date="00:00" +%s) - $(date +%s) )) ; date
bash: -54637: command not found
Sat Jul 12 15:10:37 ICT 2014
我可以看到,代码并不是简单地在午夜(明天)之前的总秒数上再加上1秒,而是实际上似乎倒数到了今天早些时候,大约15个多小时前已经发生的午夜


老实说,我不确定整个代码片段。我想知道的是,是否有人会介意将事情分解,以便更清楚地了解这里到底发生了什么,这样我就可以更好地修改我的脚本,以便它继续向前计数,甚至超过将超出当前日期的时间戳。

当只有给定时间时,该时间应用于当前日期,因此
00:00
指的是今天日期的午夜,该日期已经发生。要在明天的日期开始时表示午夜,请明确指定日期为明天,即整个日期时间为明天00:00:

$ date
Sat Jul 12 10:29:16 CEST 2014
$ date -d "00:00"
Sat Jul 12 00:00:00 CEST 2014
$ date -d "tomorrow 00:00"
Sun Jul 13 00:00:00 CEST 2014
使用该语法,获取午夜前的秒数就可以了:

$ echo $(( $(date -d "tomorrow 00:00" +%s) - $(date +%s) ))
48527

注意:当在午夜运行时,此代码将打印86400,而不是0。

可能会发布整个脚本?@user…342:好的,这就是问题所在,修复程序正在运行。我只需要一个函数,如果报警时间超过23:59,并且看起来可以正常工作,就可以在$at前面加上单词“明天”。至少警报不会立即响起,并且仍然列为当前进程。