ksh93이 AIX에서 내장 printf의 %T 형식 지정자를 지원하지 않는 이유는 무엇입니까?

ksh93이 AIX에서 내장 printf의 %T 형식 지정자를 지원하지 않는 이유는 무엇입니까?

여러 AIX 5.3/6.1 시스템에서 ksh93을 사용하여 다음 명령을 테스트했지만 printf모두 동일한 결과로 실패했습니다.

왜 그런 겁니까?

# 
# oslevel -s                               
6100-07-09-1341
# 
# 
# ksh93 -c 'echo ${.sh.version}'
Version M-12/28/93e
# 
# 
# ksh93 -c 'printf "%T\n" "now"'      
ksh93[1]: printf: T: unknown format specifier
# 
# 

답변1

%Tprintf1999년에 출시된 ksh93h의 ksh에 추가되었습니다.

참고하세요h접미사( 있는 부분 e)는 ksh93의 버전을 나타냅니다.

AT&T의 ksh93 최신 버전은 2012년에 출시된 ksh93u+입니다. 발전은 공동체의 공동 노력이다https://github.com/ksh93/ksh이 글을 쓰는 시점에서 최신 버전은 2023년 6월에 출시된 ksh93u+m 1.0.6이며, 수백 가지 버그를 수정하므로 이 버전으로 전환하는 것이 좋습니다.

ksh93e는 1996년에 출시된 오래된 제품으로 AIX 5.3 또는 6.1(둘 다 EOL AFAICT)보다 훨씬 오래되었습니다.

운이 좋다면 date내장 기능이 ksh93 버전에 포함되어 있습니다(ksh93이 오픈 소스가 되기 전이기 때문에 ksh93e에서 사용할 수 있는지는 모르겠습니다). 이 경우 다음을 수행할 수 있습니다.

builtin date
date -d now '+the format you need: %FT%T%z for instance'

( date -d동일한 날짜/시간 사양을 허용 printf %T하지만 문서화되지는 않았지만 몇 가지 예를 찾을 수 있습니다.ast-open source에 포함된 테스트 파일에서) 대신에:

printf '%(format)T %<other-directive>' \
  some-time-spec \
  other-arg

당신은 이렇게 할 것입니다 :

builtin date
printf '%s %<other-directive>' \
  "${ date -d some-time-spec +format; }" \
  other-arg

Bash는 4.2(2011)에 추가되었으며, %T이는 printfksh93 기능의 하위 집합을 호환되지 않는 방식으로 구현합니다.

nowksh93과 같은 날짜 구문 분석을 지원하지 않습니다 . 유일하게 지원되는 매개변수는 다음과 같습니다.

세게 때리다 ksh93 상당 설명하다
123456789 #123456789 모든 시대의 시간
-1² now또는'' 현재 시간
-2 3번 쉘 시작 시간

zsh는 strftime2003년에 출시된 4.1.1에 내장 날짜 형식을 추가했는데, 이는 AIX 5.3과 동기화되어야 하며 또 다른 옵션이 될 수 있습니다.

현재 시간의 형식은 ksh93의 기본 형식과 유사합니다 %T.

$ zmodload zsh/datetime
$ strftime '%a %b %e %T %Z %Y' $EPOCHSECONDS
Mon Jul 24 15:10:15 BST 2023

strftime -r그러나 구문 분석 시간은 4.3.3(2007)에서만 추가되었습니다 (AIX 6.1과 동시).strptime()


1 bash에서는 정수만 될 수 있지만 ksh93에서는 소수 부분( .로케일에 관계없이 기수 문자)을 가질 수 있습니다.

² 5.0부터 bash에는 $EPOCHSECONDS현재에도 사용할 수 있는 특수 변수(zsh에서 복사)가 있습니다.

³ 스크립트 시작 부분에는 항상 시간을 기록할 수 있지만starttime=${ printf '#%(%s.%N)T' now; }

답변2

AIX printf명령 에 대한 %T유효한 형식 사양이 아닙니다 . 확인하시기 바랍니다수동. 작동하는 것은 무엇입니까
a,A,d,i,o,u,x,X,f,F,e,E,g,G,c,s,b

관련 정보