Latest web development tutorials

perintah shell printf

Bab terakhir kita pelajari Shell gema perintah, dalam bab ini kita belajar lain keluaran Shell perintah printf.

perintah printf meniru C library (perpustakaan) dalam prosedur printf ().

definisi standar, sehingga script penggunaan printf lebih baik daripada menggunakan portabilitas echo.

printf menggunakan teks referensi atau parameter dipisahkan oleh spasi, dapat digunakan di luar format string printf, Anda juga dapat mengembangkan lebar string, dan sebagainya perataan kiri dan kanan. printf default tidak secara otomatis menambahkan satu baris seperti echo, kita dapat menambahkan \ n manual.

printf sintaks perintah:

printf  format-string  [arguments...]

Parameter Deskripsi:

  • Format-string: Format kontrol tali
  • argumen: daftar parameter.

Contohnya adalah sebagai berikut:

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

Selanjutnya, saya menggunakan script untuk mencerminkan printf kuat:

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

Mengeksekusi script, output adalah sebagai berikut:

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

% S% c% d Format% f adalah penampung

% -10s Lihat lebar 10 karakter (- untuk kiri-blok, kanan-blok, mengatakan tidak ada), setiap karakter yang ditampilkan dalam 10 karakter karakter lebar, jika tidak cukup ruang secara otomatis diisi, maka akan lebih dari konten menampilkan semua dari mereka.

% -4.2f Mengacu pada format desimal, yang berarti 0,2 2 desimal.

contoh:

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

Mengeksekusi script, output adalah sebagai berikut:

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

Urutan escape printf ini

urutan penjelasan
\ A Peringatan karakter, biasanya ASCII karakter BEL
\ B mundur
\ C Inhibisi (tidak ditampilkan) output dalam karakter newline tertinggal (hanya berlaku dalam string parameter di bawah% b Format indikator dikontrol), dan, dalam setiap karakter yang tersisa dalam parameter, dan parameter apapun dan selanjutnya tinggal di karakter format string diabaikan
\ F FF (FormFeed)
\ N wrap
\ R Masukkan (Carriage pulang)
\ T tab horisontal
\ V tab vertikal
\\ Sebuah karakter backslash literal
\ Ddd Mewakili karakter 1-3 digit nilai oktal. Berlaku hanya dalam format string
\ 0ddd Menampilkan nilai oktal 1-3 dari karakter

contoh

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