공백으로 구분된 여러 매개변수가 있는 printf의 작동 방식

공백으로 구분된 여러 매개변수가 있는 printf의 작동 방식

나는 다음과 같은 printf기능을 가지고 있습니다 :

$ printf '%s %s %s\t%s\n' 100644 blob 8e1e f1.txt 100644 blob 9de7 f2.txt | git mktree

누구든지 그것이 생산하는 것과 그 이유를 설명할 수 있습니까? 각 매개변수 문자열에 동일한 수의 형식 옵션이 있기를 원 %s하지만 여기에는 더 많은 매개변수 문자열이 있습니다.

답변1

이 형식은 모든 매개변수를 표시하는 데 필요한 만큼 여러 번 재사용할 수 있습니다. 인수가 너무 적으면 누락된 인수가 빈 문자열로 처리됩니다.

다음은 두 개의 매개변수를 지정하지만 하나만 제공하는 형식의 예입니다.

$ printf '%s ; %s ;\n' a
a ;  ;

다음은 동일한 형식입니다. 이번에는 너무 많은 매개변수가 제공됩니다.

$ printf '%s ; %s ;\n' a b c
a ; b ;
c ;  ;

다음은 형식에 4개의 매개변수가 필요한 질문의 예입니다. 8개의 매개변수가 제공되므로 전체 형식이 두 번 사용됩니다.

$ printf '%s %s %s\t%s\n' 100644 blob 8e1e f1.txt 100644 blob 9de7 f2.txt
100644 blob 8e1e        f1.txt
100644 blob 9de7        f2.txt

문서

남자 배쉬에서 :

모든 매개변수를 사용하려면 필요에 따라 형식을 재사용하세요. 형식에 제공된 것보다 더 많은 인수가 필요한 경우 추가 형식 사양은 적절한 0 값 또는 빈 문자열이 제공된 것처럼 동작합니다. 반환 값은 성공 시 0이고 실패 시 0이 아닙니다.

관련 정보