Bash
什麼時間日期值總是大於任何時間日期?
什麼時間日期值總是大於任何時間日期?
在腳本中,我想為變數提供一個參數,
duration
以便循環將永遠執行,直到我終止程序:# `duration` has a value in seconds end=$(($(date +%s) + duration)) while true; do # ... [ $(date +%s) -ge $end ] && break # ... done
我將其更改為:
SECONDS=0 while true; do # ... [ "$duration" = forever ] || [ "$SECONDS" -lt "$duration" ] || break # ... done
並且
duration=forever
無需擔心[
系統支持的最大數量是多少。
$SECONDS
每秒自動遞增。該功能來自 ksh 並且在zsh
和中也可用bash
。但是請注意,$SECONDS
每次bash
掛鐘時間的整秒更改時都會遞增,例如,如果SECONDS=0
在 12:00:00.999 執行,它將在 12:00:01.000 遞增到 1,因此只有一毫秒後。如果切換到
zsh
(不再有該錯誤)是一個選項,您可以將其更改為:typeset -F SECONDS=0 while true; do # ... (( SECONDS < duration )) || break # ... done
並使用
duration=inf
for 循環永遠執行。這也允許分數持續時間。