どの時刻日付値が常に特定の時刻日付よりも大きいのですか?

どの時刻日付値が常に特定の時刻日付よりも大きいのですか?

どの時刻日付値が常に特定の時刻日付よりも大きいのですか?

スクリプトでは、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。ただし、壁時計の時間の合計秒数が変更されるたびに$SECONDSinが増加します。たとえば、12:00:00.999に実行すると、12:00:01.000に1に増加します。ミリ秒後。bashSECONDS=0

次に切り替えるオプションがある場合zsh(そのエラーが発生しなくなった場合)、次のように変更できます。

typeset -F SECONDS=0
while true; do
    # ...
    (( SECONDS < duration )) || break
    # ...
done

そしてduration=inf永遠に実行するには、forループを使用してください。これはまた部分的な期間を可能にする。

おすすめ記事