리눅스

쉘 프로그래밍 [printf 명령]

작성자
heukchoo
작성일
2021-01-18 00:13
조회
503
echo 명령은 단순히 문자와 변수를 출력한다.

좀더 세밀한 표현을 위해서는 printf를 사용해야 한다.
printf는 서식을 지정하여 문자를 출력한다.


printf 구조

printf "서식" 문자열1 문자열2 ...

서식에는 정해진 서식룰을 입력한다.
서식룰은 C언어와 동일하다.

문자열에는 숫자, 문자열 등 출력할 문자열이나 변수명을 공백으로 구분하여 입력한다.


printf 사용 예시

#정수 100 출력, 개행하지 않음
$printf "%d" 100
100$ (<--명령프롬프트)

#정수 100 출력, 개행
$printf "%d\n" 100
100
$ (<--명령프롬프트)

#여러개의 정수 출력, 개행
$printf "%dheukchoo%d\n" 100 200
100heukchoo200

#정수 100 출력, 4자리 내로 출력, 100은 3자리이므로 앞에 공백 붙음
$printf "%4d\n" 100
_100 (<--언더바는 공백 표시임)

#정수 100 출력, 4자리 내로 출력, 앞의 공백에 0을 채움
$printf "%04d\n" 100
0100

#실수를 소수 2째자리 까지 출력
#double형 %lf도 있지만 제대로 작동하지 않는 듯 하다.
$printf "%.2f\n" 123.4567
123.45

#실수를 소수 2짜자리 까지 출력, 8자리 내로 출력
$printf "%8.2f\n" 123.4567
123.45

#실수를 소수 2짜자리 까지 출력, 8자리 내로 출력, 빈공간은 0을 채움
$printf "%08.2f\n" 123.4567
00123.45

#문자열 출력
$printf "%s\n" heukchoo
heukchoo

#문자열, 탭, 정수를 출력
$printf "%s\t%d\n" heukchoo 100
heukchoo        100

#16진수를 10진수로 출력
$printf "%d\n" 0x6f
111

#10진수를 16진수로 출력
$printf "%x\n" 111
6f
전체 0