배쉬 시간 빼기

배쉬 시간 빼기

Bash에는 두 개의 시간 변수가 있습니다. 나는 둘 사이의 시간차를 얻는 방법을 찾으려고 노력하고 있습니다.

예, 온라인에서 아주 많은 예제를 읽었지만 그 중 어느 것도 "간단한" 해결책을 갖고 있는 것 같지 않습니다. 대신 Bash의 시간적 산술은 "사후 고려"인 것 같습니다.

내가 읽은 링크는 다음과 같습니다. 링크 1

링크 2

링크 3

"우아한" 솔루션은 없는 것 같습니다(내 생각에는).

그래서 내 변수는 다음과 같습니다.

    TIME_START="date +%H:%M:%S //Start of script
    // The script
    TIME_END="date +%H:%M:%S //End of script

그래서 경과 시간을 얻고 싶습니다. 스크립트를 실행하는 데(센서, 하드웨어 등과 상호 작용하는 데) 최대 3시간이 걸릴 수 있습니다. 이 TIME_START변수는 MySQL에 삽입된 다음 "경과 시간" 계산을 위해 Bash(스크립트가 종료될 때)에 의해 검색됩니다.

다음 코드가 작동할 것이라고 어딘가에서 읽었지만 작동하지 않습니다.

   diff=$(expr $TIME_END - $TIME_START)
   echo $diff

어떤 아이디어가 있나요?

감사해요

대니

답변1

date +%s스크립트 기간을 직접 계산하는 것 외에도(바람직하게는 Roman이 지적한 대로 반환 값을 사용하여) 몇 가지 다른 옵션이 있습니다.

time실행할 수 있는 명령이 있으며 time some-script.sh스크립트가 마지막으로 실행된 시간을 인쇄합니다. 보다매뉴얼 페이지.

$SECONDSBash 스크립트에서도 사용할 수 있습니다 . 프로세스가 시작된 이후 몇 초가 절약됩니다. 따라서 echo It took $SECONDS스크립트가 끝날 무렵에 그렇게 할 수 있습니다 . 검색$SECONDS배쉬 매뉴얼 페이지.

timesBash에는 내장된 기능도 있습니다. time이는 전달된 명령(실제로 인수를 사용하지 않음)보다는 셸 자체(이를 실행하는 프로세스) 와 유사한 정보를 인쇄합니다 . 다시보다남자 난교.

편집: 두 번째 링크는 실제로 귀하가 시도하는 것과 매우 유사한 솔루션을 제공하며 Roman이 언급한 +%s 형식 문자열도 사용합니다.

답변2

사용할 수 있습니다 date +%s. 1970-01-01 00:00:00 UTC 이후의 초 수를 저장합니다.

관련 정보