Latest web development tutorials

쉘의 printf 명령

우리가 셸을 배운 마지막 장에서는이 장에서 우리는 또 다른 출력 셸 명령 printf의 내용, 명령을 에코.

printf의 명령은의 printf () 프로 시저에서 C 라이브러리 (라이브러리)를 모방.

표준 정의, 그래서 사용의 printf 스크립트 에코 휴대 성을 사용하는 것보다 더 나은.

기준 텍스트 또는 공백으로 구분 된 매개 변수를 사용하여 printf와의 printf의 형식 문자열 외부에서 사용할 수 있습니다, 당신은 또한 좌우 정렬에 너무 문자열의 폭을 개발하고 있습니다. 기본의 printf가 자동으로 에코와 같은 줄 바꿈을 추가하지 않습니다, 우리는 \ n 수동으로 추가 할 수 있습니다.

printf의 명령 구문 :

printf  format-string  [arguments...]

매개 변수 설명 :

  • 형식 문자열 : 형식 제어 문자열
  • 인수 : 매개 변수의 목록입니다.

다음 예는 다음과 같다 :

$ echo "Hello, Shell"
Hello, Shell
$ printf "Hello, Shell\n"
Hello, Shell
$

다음으로 강력한 printf의를 반영하기 위해 스크립트를 사용 :

#!/bin/bash
# author:本教程
# url:www.w3big.com
 
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 % 다 % d 개 % f를 포맷 자리입니다

% -10s 10 문자의 폭을 참조하십시오 (- 왼쪽 정렬, 오른쪽 정렬, 안된다고에 대한) 모든 문자가 10 문자 넓은 문자를 표시 충분한 공간이 자동으로 작성되는 경우,이 내용보다 더 될 것입니다 그들 모두를 보여줍니다.

%의 -4.2f는 0.2이 소수 자릿수를 의미 진수 형식을 의미합니다.

더 많은 예제 :

#!/bin/bash
# author:本教程
# url:www.w3big.com
 
# 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와의 이스케이프 시퀀스

순서 설명
\ 문자 경고 일반적으로 ASCII 문자 BEL
\ B 후퇴
\ C 매개 변수에 남아있는 자, 어떤 매개 변수와 이후 여행에서의 억제 (도시하지 않음) (만 %의 B 형식으로 표시 제어 아래에있는 매개 변수 문자열에 유효) 후행 개행 문자를 출력하고, 포맷 스트링 문자는 무시됩니다
\ F FF (폼 피드)
\ N
\ R 입력 (캐리지 리턴)
\ T 수평 탭
\ V 수직 탭
\\ 리터럴 백 슬래시 문자
\ DDD 문자 1-3 자리 진수 값을 나타냅니다. 단지 형식 문자열에 해당
\ 0ddd 캐릭터의 1-3 진수 값을보기

$ printf "a string, no processing:<%s>\n" "A\nB"
a string, no processing:<A\nB>

$ printf "a string, no processing:<%b>\n" "A\nB"
a string, no processing:<A
B>

$ printf "www.w3big.com \a"
www.w3big.com $                  #不换行