2

我需要在 Linux t 上构建简单的 ksh/bash 脚本或任何知道从参考时间计算时间的东西

当我键入如下日期命令时:

   date

   Wed Jul 17 18:13:27 IDT 2013

或者

   [root@linux /var/tmp]# current_time=` date `
   [root@linux /var/tmp]# echo $current_time

                          Wed Jul 17 18:21:51 IDT 2013  

所以我得到了当前日期。

我需要的是从当前日期算起例如 10 分钟,

所以10分钟后我会打印消息

     echo “sorry 10 min was ended“

如何从参考时间计算时间?

4

2 回答 2

4

bash有类似内置定时器的东西。该参数$SECONDS随着 shell 启动后经过的秒数不断更新。您可以分配给这个变量,在这种情况下,它的值基本上每秒递增。

一些例子:

$ SECONDS=0
$ sleep 10
$ echo $SECONDS
10

$ SECONDS=0
$ while (( SECONDS < 600 )); do
>  sleep 10
> done
于 2013-07-17T13:56:07.373 回答
1

用于date +%s获取 Unix 时间 - 自 1970 年 1 月 1 日星期四 00:00:00 协调世界时 (UTC) 以来的秒数 - 然后使用算术扩展:

current_time=$(date +%s)
elapsed_time=$(( $(date +%s) - $current_time ))

$elapsed_time然后是从 开始的秒数$current_time。然后,您可以检查是否$elapsed_time > 600在循环中。

编辑:为了完整性:

if [[ $elapsed_time > 600 ]]; then
   echo "sorry 10 min was ended"
fi

这应该在 bash 和 ksh 中都有效。

于 2013-07-17T13:31:30.430 回答