[bash: date] 타이머/스톱워치 기능 리눅스 bash script

스크립트로 반복작업을 해야 하는데, A 작업을 일단 완료하고 나서 시간이 X초 이상 흘렀으면 B 작업을 하고 아직 안 지났으면 C 작업을 해야 하는 좀 애매한 상황이 있어서 이걸 처리하려고 생각한 방법이다.

date 명령에서 출력 형식에 %s 옵션을 사용하면 UTC 기준 1970년 1월 1일 00시 00분 00초부터 몇초가 흘렀는지를 표시해 주는데, 이것을 이용했다. 아래의 예시 스크립트를 참고하자.

# 예시: A작업후 10초 이상 흘렀으면 B작업 실행, 아니면 C 작업 실행
start_time=`date "+%s"`
echo "A작업을 수행합니다!"
# A작업 수행
...
stop_time=`date "+%s"`
# 경과한 시간 = 종료시간 - 시작시간
interval=`echo "$stop_time - $start_time" | bc`
if test $interval -ge 10
then echo "10초 이상 경과. B작업을 수행합니다!"
# B작업 수행
...
else echo "아직 10초 안 됐음. C작업을 수행합니다!"
# C작업 수행
...
fi

나노초(nanosecond)를 표시하는 %N 옵션을 이용하면 간단한 스톱워치도 구현 가능. 아래의 예시를 참고하자.

#stopwatch.sh
echo "press ENTER to start"
read enter
start_time=`date "+%s.%N"`
echo "press ENTER to stop"
read enter
stop_time=`date "+%s.%N"`
result=`echo "$stop_time - $start_time" | bc`
echo "$result sec"



덧글

  • 뜌냡 2017/05/20 11:15 # 삭제 답글

    정보 감사합니다!!
  • 반달가면 2017/05/20 18:02 #

    도움 되었다니 다행입니다~!
댓글 입력 영역
* 비로그인 덧글의 IP 전체보기를 설정한 이글루입니다.

Google Analytics


B-Side


adsense(w160_h600)2

통계 위젯 (화이트)

5191032
5067
1240249

ad_widget_2