Latest web development tutorials

Polecenie powłoki printf

W ostatnim rozdziale dowiedzieliśmy Shell echo polecenia, w tym rozdziale nauczymy innego wyjścia Shell polecenia printf.

polecenia printf naśladować C Library (biblioteka) w printf () procedury.

Standardowa rozdzielczość, więc skrypt wykorzystanie printf lepsza niż echo przenośność.

printf używając tekstu odniesienia lub parametrów oddzielonych spacjami, mogą być stosowane na zewnątrz łańcucha formatu printf, można również rozwijać szerokość napisu, i tak dalej lewego i prawego wyrównania. Domyślnie printf nie automatycznie dodać podział wiersza, jak echo, możemy dodać \ n ręcznie.

printf Składnia polecenia:

printf  format-string  [arguments...]

Parametr Opis:

  • Format string string kontroli formatu
  • Argumenty: lista parametrów.

Przykłady są następujące:

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

Następnie używam skryptu odzwierciedlać silny 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 

Wykonaj skrypt, wyjście jest w następujący sposób:

姓名     性别   体重kg
郭靖     男      66.12
杨过     男      48.65
郭芙     女      47.99

% S% c% d% f Format są zastępcze

% -10s Odnoszą się do szerokości 10 znaków (- dla wyrównania do lewej, prawej wyrównany, że nie), wszystkie znaki są wyświetlane w 10 znaków szerokich znaków, jeśli za mało miejsca jest automatycznie wypełniane, to będzie więcej niż treści pokaż wszystkie z nich.

% -4.2f Dotyczy formacie dziesiętnym, co oznacza .2 2 miejsc po przecinku.

Więcej przykładów:

#!/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" 

Wykonaj skrypt, wyjście jest w następujący sposób:

1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j  
 and 0

sekwencja ucieczki w printf

sekwencja wyjaśnienie
\ a Ostrzeżenie znak, zwykle znak ASCII BEL
\ B rekolekcje
\ C Hamowanie (nie pokazano), wyjście w każdych końcowe znaki nowej linii (ważny tylko w łańcuchu parametrów pod% wskaźnika formatu b kontrolowanego), a żadnych znaków pozostawionych w parametrach oraz wszelkich parametrów i każdego kolejnego pobytu w znaków format string są ignorowane
\ F FF (Wysuw)
\ N Wrap
\ R Enter (powrót karetki)
\ T Zakładka pozioma
\ V Zakładka pionie
\\ Dosłowne znak backslash
\ Ddd Reprezentowania znaków 1-3 cyfr wartości ósemkowej. Obowiązuje tylko w ciągu formatu
\ 0ddd Wyświetlono 1-3 wartość liczbowa znaku

Przykłady

$ 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 $                  #不换行