在Bash中添加秒数到当前时间

时间:2018-01-17 03:15:14

标签: bash date time

我想加10秒10次。但我不知道如何增加价值的时间。

这是我的代码。

./ time.sh

time=$(date)
counter=1
while [ $counter -le 10 ] 
do
    echo "$time"
    time=$('$time + 10 seconds') //error occurred.
    ((counter++))
done

echo All done

1 个答案:

答案 0 :(得分:3)

使用GNU日期

假设GNU date,请替换:

time=$('$time + 10 seconds')

使用:

time=$(date -d "$time + 10 seconds")

总而言之,试试:

$ cat a.sh
t=$(date)
counter=1
while [ "$counter" -le 10 ]
do
    echo "$t"
    t=$(date -d "$t + 10 seconds")
    ((counter++))
done

echo All done

(我将time重命名为t,因为time也是一个bash内置命令,最好避免混淆。)

运行时,输出如下:

$ bash a.sh
Tue Jan 16 19:19:44 PST 2018
Tue Jan 16 19:19:54 PST 2018
Tue Jan 16 19:20:04 PST 2018
Tue Jan 16 19:20:14 PST 2018
Tue Jan 16 19:20:24 PST 2018
Tue Jan 16 19:20:34 PST 2018
Tue Jan 16 19:20:44 PST 2018
Tue Jan 16 19:20:54 PST 2018
Tue Jan 16 19:21:04 PST 2018
Tue Jan 16 19:21:14 PST 2018
All done

使用Bash(> 4.2)

bash的最新版本支持没有外部实用程序的日期计算。尝试:

$ cat b.sh
#!/bin/bash
printf -v t '%(%s)T' -1
counter=1
while [ "$counter" -le 10 ]
do
    ((t=t+10))
    printf '%(%c)T\n' "$t"
    ((counter++))
done

echo All done

在这里,t是时间以来的时间,以秒为单位。

运行时,输出如下:

$ bash b.sh
Tue 16 Jan 2018 07:31:44 PM PST
Tue 16 Jan 2018 07:31:54 PM PST
Tue 16 Jan 2018 07:32:04 PM PST
Tue 16 Jan 2018 07:32:14 PM PST
Tue 16 Jan 2018 07:32:24 PM PST
Tue 16 Jan 2018 07:32:34 PM PST
Tue 16 Jan 2018 07:32:44 PM PST
Tue 16 Jan 2018 07:32:54 PM PST
Tue 16 Jan 2018 07:33:04 PM PST
Tue 16 Jan 2018 07:33:14 PM PST
All done