경우에는 사람이 다른 쉘을보다 사용 bash
, ksh93
및 zsh
부동 소수점이 $SECONDS
당신이 할 경우 변수를 typeset -F SECONDS
정확하게 시간을 측정하는 것이 편리 할 수있는을 :
$ typeset -F SECONDS=0
$ do-something
something done
$ echo "$SECONDS seconds have elapsed"
18.3994340000 seconds have elapsed
이후 버전 4.3.13 (2011) zsh
가 $EPOCHREALTIME
에 포인트 변수를 부동 특수 zsh/datetime
모듈 :
$ zmodload zsh/datetime
$ echo $EPOCHREALTIME
1364401642.2725396156
$ printf '%d\n' $((EPOCHREALTIME*1000))
1364401755993
이는에서 반환 한 두 정수 (초 및 나노초)에서 파생됩니다 clock_gettime()
. 대부분의 시스템에서 단일 C double
부동 소수점 숫자가 보유 할 수있는 것보다 정밀도가 높기 때문에 산술 표현식에서 사용할 때 정밀도가 떨어집니다 (1970 년 첫 몇 개월 동안의 날짜 제외).
$ t=$EPOCHREALTIME
$ echo $t $((t))
1568473231.6078064442 1568473231.6078064
고정밀 시간 차이를 계산하려면 (밀리 초 이상의 정밀도가 필요할지 모르지만) $epochtime
대신 초와 나노초를 두 개의 개별 요소로 포함하는 특수 배열 을 사용할 수 있습니다 .
버전 5.7 (2018)부터 strftime
쉘 내장은 %N
나노초 형식 인 GNU date
및 a %.
를 지원하여 정밀도를 지정하므로 신기원 이후의 밀리 초 수를 다음과 같이 검색 할 수도 있습니다.
zmodload zsh/datetime
strftime %s%3. $epochtime
(또는로 변수에 저장 -s var
)