所以,正如标题所暗示的,我注意到这个奇怪的事情,sleep
本质上是increment
你把它作为参数给出的时间。例子:
#!/usr/bin/env bash
set -x
SECONDS="1"
while true; do
echo "hello" || true
sleep "$SECONDS"
done
Run Code Online (Sandbox Code Playgroud)
但不可否认,这只是因为我使用了该$SECONDS
变量,而不是以不同的方式命名它......从我所看到的,它所做的只是输出时钟的秒数?有点像我猜的日期。
但除此之外它实际上还有什么作用呢?我认为我没有在 Bash 文档中看到过任何有关它的内容,也没有在任何公共脚本中看到过它。
来自bash 手册页:
秒
每次引用此参数时,都会返回自 shell 调用以来的秒数。如果将值分配给 SECONDS,则后续引用时返回的值是自分配以来的秒数加上所分配的值。如果 SECONDS 未设置,它将失去其特殊属性,即使随后重置也是如此。
因此,通过设置,SECONDS
您1
可以重新启动计数器,该计数器现在从 1 开始,并随着 while 循环的每次迭代而加倍,因为变量SECONDS
会随着经过的时间而增加,从而为您提供一个很好的几何序列sleep
。
+ SECONDS=1
+ true
+ echo hello
hello
+ sleep 1
+ true
+ echo hello
hello
+ sleep 2
+ true
+ echo hello
hello
+ sleep 4
+ true
+ echo hello
hello
...
Run Code Online (Sandbox Code Playgroud)