인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

e99님의 프로필 이미지
e99

작성한 질문수

리눅스 쉘 스크립트 마스터

명령어(printf)

질문있습니다.

작성

·

222

0

name=michael; printf -v legend "%s jackson" $name; echo $legend

해당 명령을 입력했을 때, 결과로 michael jackson 출력되는데 %s jackson  $name 이부분이 어떻게 적용되는지 자세히 설명 부탁드립니다.

답변 1

1

홍영기님의 프로필 이미지
홍영기
지식공유자

seol3865!! 님 강의를 수강하시면서 궁금한 점이 발생되셨군요. 자 그럼 시작해보겠습니다

먼저 간단한 실험(A)을 해보겠습니다

user@linux$ name=michael; printf "%s jackson" $name

michael jacksonuser@linux$ 

두번째 실험(B)을 해보겠습니다

user@linux$ name=michael; printf -v legend "%s jackson" $name; echo $legend

michael jackson

user@linux$ 

어떤 차이점이 느껴지실까요?

실험(A)의 경우 문자열이 형식화된 출력(formatted string)으로 화면에 보이게됩니다

실험(B)의 경우 문자열이 화면에 출력되는대신 지정 변수(legend)에 저장됩니다

이 표현법은 아래처럼 C언어 printf 함수의 사용례와 많이 흡사합니다

char* name="michael"; printf("%s jackson",  name);  <--- %s 는 우측의 문자열(name)로 실제로 치환되어 사용됩니다

화면출력=> michael jackson

마지막 결론입니다  name=michael; printf -v legend "%s jackson" $name; echo $legend 

이 문장의 해석법은 name변수에는 마이클이 들어있고, "%s jackson" $name 는 다음처럼 치환되며

 "michael jackson" 최종적으로 이 문자열은 legend 변수에 저장되고, 

echo $legend 명령에 의해 화면에 출력되죠?

seol3865 님 ! 어느정도 궁금증이 해결되셨을까요?

그럼 마지막 영상까지 즐감하세요:)

e99님의 프로필 이미지
e99

작성한 질문수

질문하기