[bash] bash 스크립트에서 타임 스탬프 변수 만들기

로깅을 조금 더 쉽게하기 위해 쉘 스크립트에서 타임 스탬프 변수를 만들려고합니다. 스크립트 시작 부분에 변수를 작성하고 발행 할 때마다 현재 시간을 인쇄하고 싶습니다 echo $timestamp. 생각보다 어렵다는 것이 증명되었습니다. 내가 시도한 몇 가지 사항은 다음과 같습니다.

timestamp="(date +"%T")" 에코가 출력됩니다 (date +"%T")

timestamp="$(date +"%T")" echo는 변수가 초기화 된 시간을 인쇄합니다.

내가 시도한 다른 것은 더 이상 작동하지 않는 약간의 변형입니다. 누구든지 내가하려는 일을 성취하는 방법을 알고 있습니까?



답변

고정 변수가 정의 된 시간이 아닌 현재 타임 스탬프를 얻으려면 변수가 아닌 함수를 사용하는 것이 좋습니다 .

#!/bin/bash

# Define a timestamp function
timestamp() {
  date +"%T"
}

# do something...
timestamp # print timestamp
# do something else...
timestamp # print another timestamp
# continue...

%T지정자가 제공 한 형식이 마음에 들지 않으면에서 허용하는 다른 시간 변환 지정자를 결합 할 수 있습니다 date. GNU의 date경우 공식 문서에서 https://www.gnu.org/software/coreutils/manual/html_node/Time-conversion-specifiers.html#Time-conversion-specifiers 에서 이러한 지정자의 전체 목록을 찾을 수 있습니다.


답변

유닉스 타임 스탬프를 얻으려면 다음을 사용해야합니다.

timestamp=$(date +%s)

%T당신에게 시간을 줄 것입니다; %H:%M:%S( http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ 를 통해 ) 와 동일


답변

DATE=`date "+%Y%m%d"`

DATE_WITH_TIME=`date "+%Y%m%d-%H%M%S"` #add %3N as we want millisecond too


답변

ISO 8601 형식 ( 2018-12-23T12:34:56)은 UNIX 타임 스탬프보다 읽기 쉽습니다. 그러나 일부 OS :에서는 파일 이름을 가질 수 없습니다 . 따라서 대신 다음과 같은 것을 사용하는 것이 좋습니다.

2018-12-23_12-34-56

다음 명령을 사용하여이 형식의 타임 스탬프를 얻을 수 있습니다.

TIMESTAMP=`date +%Y-%m-%d_%H-%M-%S`

이것은 많은 응용 프로그램에서 사용하는 형식입니다. 이것에 대한 또 다른 좋은 점은 파일 이름이 이것으로 시작하면 알파벳순으로 정렬 할 수 있으며 날짜순으로 정렬된다는 것입니다.


답변

우분투 14.04를 사용하고 있습니다.

내 시스템의 올바른 방법은입니다 date +%s.

의 출력 date +%T은 같습니다 12:25:25.


답변

명령 대체를 사용하십시오.

timestamp=$( date +%T )


답변

당신이 사용할 수있는

timestamp=`date --rfc-3339=seconds`

이것은 형식으로 제공 2014-02-01 15:12:35-05:00

백틱 ( `) 문자는 그 사이에있는 것을 평가하여 결과를 줄에 포함시킵니다. date --help다른 옵션이 있습니다.