`printf "%s"`가 다음 두 문자열을 함께 연결하는 이유는 무엇입니까? [복사]

`printf "%s"`가 다음 두 문자열을 함께 연결하는 이유는 무엇입니까? [복사]
$ printf "%s" a b
ab$ printf "%s%s" a b
ab

형식 지정자를 이해하는 데 몇 가지 문제가 있습니다 printf. 내 말이 맞다면 기본적으로 C 프로그래밍 언어의 문자열과 동일합니다.

형식 지정자가 %s다음 두 문자열을 함께 연결하는 이유는 무엇입니까?

%s하나의 문자열만 표현하여 대체하고 나머지 문자열은 무시하면 어떨까요 ?

%sunder 및 under 두 문자열의 결과가 동일한 이유는 무엇입니까 %s%s?

답변1

그건printf행동 방법을 지정하십시오.:

이것체재피연산자는 필요에 따라 재사용되어야 합니다.토론피연산자. 추가 b, c 또는 s 변환 지정자는 빈 문자열 인수가 제공된 것처럼 평가됩니다. 다른 추가 변환 사양은 0개의 인수가 제공된 것처럼 평가됩니다. 만약에체재피연산자에 변환 사양이 포함되어 있지 않으며토론피연산자가 있지만 결과가 지정되지 않았습니다.

귀하의 경우 %s모든 매개변수를 처리하는 데 필요한 만큼 형식이 반복됩니다.

printf "%s" a b

그리고

printf "%s%s" a b

%s두 번 반복된 첫 번째 경우와 동일한 결과를 생성합니다 %s%s.

답변2

형식 문자열이 예상하는 것보다 더 많은 인수를 제공하면 printf형식 문자열이 반복됩니다.

예를 들어

$ printf "%s -- %s" a b c d e
a -- bc -- de -- 

%s -- %s형식이 효과적으로 반복되는 것을 볼 수 있습니다 .

예를 들어 형식 지정에 유용할 수 있습니다.

$ printf "%s -- %s\n" a b c d e
a -- b
c -- d
e -- 

관련 정보