$ printf "%s" a b
ab$ printf "%s%s" a b
ab
형식 지정자를 이해하는 데 몇 가지 문제가 있습니다 printf
. 내 말이 맞다면 기본적으로 C 프로그래밍 언어의 문자열과 동일합니다.
형식 지정자가 %s
다음 두 문자열을 함께 연결하는 이유는 무엇입니까?
%s
하나의 문자열만 표현하여 대체하고 나머지 문자열은 무시하면 어떨까요 ?
%s
under 및 under 두 문자열의 결과가 동일한 이유는 무엇입니까 %s%s
?
답변1
이것체재피연산자는 필요에 따라 재사용되어야 합니다.토론피연산자. 추가 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 --