Perintah shell printf
Dalam bab sebelumnya, kita telah mempelajari tentang perintah gema Shell Dalam bab ini, kita akan mempelajari tentang perintah keluaran Shell yang lain, printf.
Arahan printf meniru program printf() dalam perpustakaan C.
ditakrifkan oleh standard, jadi skrip menggunakan printf lebih mudah alih daripada menggunakan gema.
printf menggunakan teks yang dipetik atau parameter terhad ruang Anda boleh menggunakan rentetan terformat dalam printf, dan anda juga boleh menentukan lebar, penjajaran kiri dan kanan rentetan, dsb. Secara lalai printf tidak menambah baris baharu secara automatik seperti gema, kita boleh menambah n secara manual.
Sintaks arahan Printf:
printf format-string [arguments...]
Perihalan parameter:
format-string: ialah Format rentetan kawalan
argumen: ialah senarai parameter.
Contohnya adalah seperti berikut:
$ echo "Hello, Shell" Hello, Shell $ printf "Hello, Shell\n" Hello, Shell $
Seterusnya, saya akan menggunakan skrip untuk mencerminkan fungsi berkuasa 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
Laksanakan skrip , hasil output adalah seperti berikut Ditunjukkan:
姓名 性别 体重kg 郭靖 男 66.12 杨过 男 48.65 郭芙 女 47.99
%s %c %d %f adalah semua pengganti format
%-10s merujuk kepada lebar 10 aksara (- bermaksud penjajaran kiri, tanpa penjajaran kanan ), sebarang aksara akan dipaparkan dalam lebar 10 aksara Jika ia tidak mencukupi, ia akan diisi secara automatik dengan ruang Jika melebihi, semua kandungan akan dipaparkan.
%-4.2f merujuk kepada pemformatan sebagai perpuluhan, dengan .2 merujuk kepada mengekalkan 2 tempat perpuluhan.
Lagi contoh:
#!/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"
melaksanakan skrip dan output adalah seperti berikut:
1 abc 1 abc abcdefabcdefabc def a b c d e f g h i j and 0
Jujukan melarikan diri printf
序列 | 说明 |
---|---|
a | 警告字符,通常为ASCII的BEL字符 |
b | 后退 |
c | 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略 |
f | 换页(formfeed) |
n | 换行 |
r | 回车(Carriage return) |
t | 水平制表符 |
v | 垂直制表符 |
\ | 一个字面上的反斜杠字符 |
ddd | 表示1到3位数八进制值的字符。仅在格式字符串中有效 |