【问题标题】:How to count time from current reference time如何从当前参考时间计算时间
【发布时间】:2013-07-16 01:29:16
【问题描述】:

我需要在 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“

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

【问题讨论】:

  • 例如,sleep 10 && echo "hi" 将在 10 秒后显示“hi”。
  • 我不想睡觉,在我需要执行一些其他操作的代码中,我只需要从参考时间开始计数

标签: linux bash shell date ksh


【解决方案1】:

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

一些例子:

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

$ SECONDS=0
$ while (( SECONDS < 600 )); do
>  sleep 10
> done

【讨论】:

    【解决方案2】:

    使用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 &gt; 600 是否在您的循环中。

    编辑:为了完整性:

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

    这应该适用于 bash 和 ksh。

    【讨论】:

      猜你喜欢
      • 2016-09-29
      • 2023-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多