2012-02-06 6 views
0

스크립트 파일의 출력 로깅에 타임 스탬프를 사용하고 싶습니다. 절단하기 위해 "20120206_104531_944652200"에코 타임 스탬프 생성/에코 문자열에서 파이프를 사용할 수 없음

같은 콘솔


날짜 + % Y %의 m %의 D_ %의 H %의 M %의 S_의 %의 N

인쇄 무언가 찾은 모든 나노 및 마이크 초

날짜 + % Y % m % d_ % H % M % S_ % N | 이 다소 다른 것으로 보인다 scriptfile에서 나에게 "20120206_104531_944"

같은 것을 제공 SED의 ". \ {6 \} $",,

. 타임 스탬프는 매번 로그 출력이 완료 될 때마다 으로 평가되어야합니다.

이 scriptcode 작동 :

#!/usr/bin/bash 
log_prefix1="date +%Y%m%d_%H%M%S_%N" 

echo "`${log_prefix1}` blabla" 
sleep 3 
echo "`${log_prefix1}` blabla" 

불행하게도 나는 나노초 만 3 가장 중요한 자리 실행이 얻을 수있는 방법을 찾지 못했습니다.

이 scriptcode은 작동하지 않습니다

#!/usr/bin/bash 
log_prefix="date +%Y%m%d_%H%M%S_%N | sed s,\".\{6\}$\",," 

echo "`${log_prefix}` blabla" 
sleep 3 
echo "`${log_prefix}` blabla" 

나는 다음과 같은 오류 메시지가 얻을 :

date: extra operand `|' 
Try `date --help' for more information. 

그래서, 뭔가는 실행 시간에 나오지하기 위해 파이프 잘못 가고 있습니다.

아이디어가 있으십니까?

답변

3

당신은 인생을 좀 더 간단하게 만들 수 있습니다.

뭔가 같은 :

log_echo() { 
    echo $(date +%Y%m%d_%H%M%S_%N | sed 's,.\{6\}$,,') "[email protected]"; 
} 

... 

log_echo hello there 
+0

'$의 *'- DWIM 호환되지 않는; 예를 들어 공백 문자가 여러 개 연속 된 문자열을 시도해보십시오. 대신에 "$ @"를 사용하십시오. – l0b0

+0

좋은 지적, 업데이트 됨 – Mat