shell 在猛击中每秒增加时间

nfeuvbwi  于 2023-03-19  发布在  Shell
关注(0)|答案(1)|浏览(154)

我有一个要求,以增加每一秒的时间从过去5分钟的时间,并做一些执行形成的时间。
我能够获得过去5分钟的时间,并使用日期的-v命令将其保存在变量中,因为我正在MacOS上工作

prevdate=$(date -v -5M)

现在我尝试每秒增加这个时间。我尝试使用echo命令来检查输出是否正确,但我总是以失败告终,因为找不到命令。我尝试了下面的命令。

echo "$prevdate -v +1S"

还尝试将prevdate转换为epoch second,但无法完成。

echo "$prevdate +%s"

如何在echo命令中使用带有日期命令的变量。请帮助。

yfwxisqw

yfwxisqw1#

你最好把历元时间保存在一个变量中,整数更容易计算。
例如:
1.首先获取当前历元
1.需要时增加历元时间
1.如果需要,转换为人类可读
演示脚本,循环5次,每秒记录当前时间:

注意:基于MacOs的date命令!

#!/bin/bash

# Now + Minus 5 minutes
t=$(date +%s)
minus_5=$(($t - 300))

# Log staring values
echo "Now : $t ($(date -r $t))"
echo "-5m : $minus_5 ($(date -r $minus_5))"
echo ''

# Example Loop
debugLoop=0
while [[ $((debugLoop++)) -lt 5 ]]; do

    # Increment
    t=$((t + 1))

    # Log
    echo "Loop: $t ($(date -r $t))"

    # Delay
    sleep 1
done

此输出如下(截至目前)

Now : 1678814087 (Tue Mar 14 18:14:47 CET 2023)
-5m : 1678813787 (Tue Mar 14 18:09:47 CET 2023)

Loop: 1678814088 (Tue Mar 14 18:14:48 CET 2023)
Loop: 1678814089 (Tue Mar 14 18:14:49 CET 2023)
Loop: 1678814090 (Tue Mar 14 18:14:50 CET 2023)
Loop: 1678814091 (Tue Mar 14 18:14:51 CET 2023)
Loop: 1678814092 (Tue Mar 14 18:14:52 CET 2023)

相关问题