どの時刻日付値が常に特定の時刻日付よりも大きいのですか?
スクリプトでは、duration
プロセスが終了するまでループが永久に実行されるように変数にパラメータを提供したいと思います。
# `duration` has a value in seconds
end=$(($(date +%s) + duration))
while true; do
# ...
[ $(date +%s) -ge $end ] && break
# ...
done
ベストアンサー1
私はそれを次のように変更します:
SECONDS=0
while true; do
# ...
[ "$duration" = forever ] || [ "$SECONDS" -lt "$duration" ] || break
# ...
done
そして、システムがサポートする最大数がどれくらいかduration=forever
心配する必要はありません。[
$SECONDS
毎秒自動的に増加します。この機能はkshで提供されており、zsh
でも利用できますbash
。ただし、壁時計の時間の合計秒数が変更されるたびに$SECONDS
inが増加します。たとえば、12:00:00.999に実行すると、12:00:01.000に1に増加します。ミリ秒後。bash
SECONDS=0
次に切り替えるオプションがある場合zsh
(そのエラーが発生しなくなった場合)、次のように変更できます。
typeset -F SECONDS=0
while true; do
# ...
(( SECONDS < duration )) || break
# ...
done
そしてduration=inf
永遠に実行するには、forループを使用してください。これはまた部分的な期間を可能にする。