だからタイトルからわかるように、私はこれを見つけました。奇妙なsleep
デフォルトでは、increment
時間をパラメータとして提供します。例:
#!/usr/bin/env bash
set -x
SECONDS="1"
while true; do
echo "hello" || true
sleep "$SECONDS"
done
しかし、それは認めます。変数名を別々に指定するのではなく、その変数を使用したためです$SECONDS
。私が見ることができるように、変数がすることは時計の秒単位だけを出力するだけです。私が推測した日付に似ています。
しかし、実際にはどんな役割を果たしますか?私はBash文書や公開スクリプトでこれについて何も見たことがないと思います。
ベストアンサー1
~からバッシュのマニュアルページ:
第二
このパラメーターが参照されるたびに、シェルが呼び出されてからの秒数が返されます。値がSECONDSに割り当てられている場合、後続の参照によって返される値は、割り当て後の秒数に割り当てられた値を加算した値です。 SECONDS が設定されていないと、後でリセットしても特殊属性が失われます。
したがって、設定を使用すると、 1から始まり、変数が経過時間に応じて増加SECONDS
する1
につれて、whileループが繰り返されるたびに2倍に増加するカウンタを再起動し、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
...