쉘 printf 명령
이전 장에서는 Shell의 echo 명령어에 대해 알아보았습니다. 이번 장에서는 Shell의 또 다른 출력 명령어인 printf에 대해 알아보겠습니다.
printf 명령은 C 라이브러리의 printf() 프로그램을 모방합니다.
표준에 따라 정의되므로 printf를 사용하는 스크립트는 echo를 사용하는 것보다 이식성이 더 좋습니다.
printf는 인용된 텍스트나 공백으로 구분된 매개변수를 사용합니다. printf에서 형식이 지정된 문자열을 사용할 수 있으며 문자열의 너비, 왼쪽 및 오른쪽 정렬 등을 지정할 수도 있습니다. 기본적으로 printf는 echo와 같은 개행 문자를 자동으로 추가하지 않으므로 n을 수동으로 추가할 수 있습니다.
Printf 명령 구문:
printf format-string [arguments...]
매개변수 설명:
format-string:은 형식 제어 문자열입니다.
arguments:는 매개변수 목록입니다.
예제는 다음과 같습니다.
$ echo "Hello, Shell" Hello, Shell $ printf "Hello, Shell\n" Hello, Shell $
다음으로 printf의 강력한 기능을 반영하는 스크립트를 사용하겠습니다.
#!/bin/bash # author:php中文网 # url:www.php.cn printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
스크립트를 실행하면 출력 결과는 다음과 같습니다.
姓名 性别 体重kg 郭靖 男 66.12 杨过 男 48.65 郭芙 女 47.99
%s %c % d %f는 모두 형식 대체 문자
%-10s는 10자 너비를 나타냅니다(-는 왼쪽 정렬을 의미하고, 그렇지 않으면 오른쪽 정렬을 의미합니다). 부족하면 자동으로 공백이 채워집니다. 한도를 초과하면 모든 내용이 표시됩니다.
%-4.2f는 소수점 이하 자릿수 2자리를 유지한다는 의미입니다.
추가 예:
#!/bin/bash # author:php中文网 # url:www.php.cn # format-string为双引号 printf "%d %s\n" 1 "abc" # 单引号与双引号效果一样 printf '%d %s\n' 1 "abc" # 没有引号也可以输出 printf %s abcdef # 格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用 printf %s abc def printf "%s\n" abc def printf "%s %s %s\n" a b c d e f g h i j # 如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替 printf "%s and %d \n"
는 스크립트를 실행하고 출력은 다음과 같습니다.
1 abc 1 abc abcdefabcdefabc def a b c d e f g h i j and 0
printf
sequence | Explanation |
---|---|
a의 이스케이프 시퀀스 | 경고 문자, 일반적으로 ASCII BEL 문자의 경우 |
b | back |
c | 은 출력 결과에서 후행 개행 문자를 억제(표시하지 않음)합니다(%b 형식 지정자로 제어되는 매개변수 문자열에서만 유효함). 매개변수에 남아 있는 모든 문자, 후속 매개변수 및 형식 문자열에 남아 있는 모든 문자는 무시됩니다 |
f | formfeed(formfeed) |
n | 라인 피드 |
r | 캐리지 리턴 |
t | 가로 탭 문자 |
v | 세로 탭 문자 |
\ | 대시 문자 |
ddd | 1을 나타내는 문자 3자리 8진수 값. 형식 문자열에서만 유효합니다 |