我想加 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
Run Code Online (Sandbox Code Playgroud)
假设 GNU date,替换:
time=$('$time + 10 seconds')
Run Code Online (Sandbox Code Playgroud)
和:
time=$(date -d "$time + 10 seconds")
Run Code Online (Sandbox Code Playgroud)
把它们放在一起,尝试:
$ 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
Run Code Online (Sandbox Code Playgroud)
(我重命名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
Run Code Online (Sandbox Code Playgroud)
最新版本的 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
Run Code Online (Sandbox Code Playgroud)
这里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
Run Code Online (Sandbox Code Playgroud)