激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

Linux|Centos|Ubuntu|系統(tǒng)進(jìn)程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

香港云服务器
服務(wù)器之家 - 服務(wù)器系統(tǒng) - Linux - bash 中的格式化輸出命令:printf

bash 中的格式化輸出命令:printf

2023-05-08 17:12未知服務(wù)器之家 Linux

在 Linux 命令行中最簡單的打印方法是使用 echo 命令: echo "Value of var is $var " 然而,echo 命令不支持格式化輸出。要格式化輸出,可以使用 printf 命令,bash 中的 printf 與 c/c++ 中的printf 命令類似: printf "My brother %s is %d years old.\n" Pra

bash 中的格式化輸出命令:printf

在 Linux 命令行中最簡單的打印方法是使用 echo 命令:

echo "Value of var is $var"

然而,echo 命令不支持格式化輸出。要格式化輸出,可以使用 printf 命令,bash 中的 printf 與 c/c++ 中的printf 命令類似:

printf "My brother %s is %d years old.\n" Prakash 21

其輸出如下所示:

bash 中的格式化輸出命令:printf

第一個(gè)參數(shù) %s 接受一個(gè)字符串,第二個(gè)參數(shù) %d 接受的是一個(gè)十進(jìn)制整數(shù),就跟 c/c++ 中的一樣。接下來我們展示一些 bash printf 命令的例子。

bash 中的 printf 命令

printf 命令的語法如下:

printf format [arguments]

這里,format 是一個(gè)字符串,用于確定后續(xù)值的顯示方式。

在上面的例子中 printf "My brother %s is %d years old.\n" Prakash 21,前面的語句 "My brother %s is %d years old.\n" 是格式,后面的 Prakash21 是參數(shù),這些參數(shù)用于替換前面格式中的占位符 %s %d

在最簡單的方式中,printf 的使用跟 echo 類似:

printf "Hello World\n"

注意到最后面的換行符 \n 了嗎?echo 和 printf 命令的區(qū)別在于,echo 命令會自動在末尾添加一個(gè)換行符,但是 printf 命令需要手動添加。

bash 中的格式化輸出命令:printf

要特別注意參數(shù)的類型和數(shù)量

這里需要注意,格式化字符串通常會嘗試應(yīng)用于所有參數(shù)。看下面的例子:?

$ printf "Hello, %s! \n" Abhishek Prakash
Hello, Abhishek!
Hello, Prakash!

bash 中的格式化輸出命令:printf

同時(shí),也需要盡量匹配格式化字符串中所期望的數(shù)據(jù)類型:

bash 中的格式化輸出命令:printf

通過上面的例子可以看到,如果沒有找到匹配的參數(shù),會使用默認(rèn)值,默認(rèn)字符串為 null,整數(shù)為 0.?

printf "Hi %s, your room number is %d. \n" Abhishek Prakash 131
bash: printf: Prakash: invalid number
Hi Abhishek, your room number is 0.
Hi 131, your room number is 0.

上面代碼中,Abhishek Prakash 會被用于第一個(gè)參數(shù),131 會被用于第二個(gè)參數(shù)。

當(dāng)它找到一個(gè)字符串(Prakash)而不是整數(shù)時(shí),就會報(bào)錯(cuò),但它會繼續(xù)顯示第二個(gè)參數(shù)為默認(rèn)值0的輸出。

類似地,它將131視為第二組參數(shù)中的字符串,由于第二個(gè)參數(shù)不存在,因此它默認(rèn)為0。

規(guī)范格式字符

有幾個(gè)格式說明符可用于以所需格式顯示輸出。以下是一些最常見的:

字符

用途

%s

String

%c

Single character

%d

Integers

%o

Octal integers

%x

Hexadecimal integers

%f

Floating point

%b

String with backslash escape character

%%

Percent sign

一些例子

下面是一些比較簡單的例子,通過命令就可以看出它的用法。?

$ printf "The octal value of %d is %o\n" 30 30
The octal value of 30 is 36

讓我們看看使用 %b 說明符來正確解釋反斜杠轉(zhuǎn)義字符。?

$ printf "String with backslash: %s\n" "Hello\nWorld!"
String with backslash: Hello\nWorld!

上面例子中 %s 正常使用,這個(gè)沒有什么好解釋的,但是參數(shù)中的 \n 換行符卻沒有起作用。這時(shí)候,需要用到 %b:

$ printf "String with backslash: %b\n" "Hello\nWorld!"
String with backslash: Hello
World!

當(dāng)使用 %c 時(shí),它一次只讀取一個(gè)字符:

$ printf "Character: %c\n" a
Character: a
$ printf "Character: %c\n" a b c
Character: a
Character: b
Character: c
$ printf "Character: %c\n" abc
Character: a

使用修飾符以特定樣式顯示 printf 輸出

有一些字符可以用于根據(jù)你的喜好來設(shè)置輸出的樣式。

# 用于顯示八進(jìn)制和十六進(jìn)制數(shù)字

早些時(shí)候,我們使用過 %o 將十進(jìn)制轉(zhuǎn)為八進(jìn)制,但是輸出卻不能很清楚的看出來這是一個(gè)八進(jìn)制,所以現(xiàn)在我們使用修飾符 # 來正確的顯示八進(jìn)制和十六進(jìn)制的數(shù)字。?

$ printf "%d is %#o in octal and %#x in hexadecimal\n" 30 30 30
30 is 036 in octal and 0x1e in hexadecimal

正整數(shù)的空格修飾符

可以在 % d 之間加一個(gè)空格來顯示帶前導(dǎo)空格的正整數(shù),當(dāng)有正數(shù)和負(fù)數(shù)時(shí),這樣顯示會更規(guī)范,如下所示:?

$ printf "%d \n%d \n%d \n" 10 -10 10
10
-10
10
$ printf "% d \n%d \n% d \n" 10 -10 10
10
-10
10

寬度修改器

寬度修飾符是一個(gè)整數(shù),用于指定參數(shù)的最小字段寬度。

默認(rèn)情況下,它是右對齊的:?

$ printf "%10s| %5d\n" Age 23
Age| 23

可以使用中劃線 - 來讓其左對齊:

$ printf "%-10s| %-5d\n" Age 23
Age | 23

設(shè)置精度

可以使用一個(gè)點(diǎn) . 來指定 %d%u%o%x 顯示的最小位數(shù),不足位的左側(cè)以 0 補(bǔ)充。如下所示:?

$ printf "Roll Number: %.5d\n" 23
Roll Number: 00023

如果對字符串使用精度修飾符,它會指定字符串的最大長度。如果字符串較長,則會在顯示中被截?cái)唷?

$ printf "Name: %.4s\n" Abhishek
Name: Abhi

還可以組合寬度和精度修改器:

$ printf "Name: %.4s\n" Abhishek
Name: Abhi
$ printf "Name: %10.4s\n" Abhishek
Name: Abhi

以表格格式顯示輸出

下面我們看一個(gè)稍微復(fù)雜一點(diǎn)的例子,在 bash 中使用 printf 命令打印如下表格:

Name

ID

Age

Grades

Sherlock Holmes

0000122

23

A

James Bond

0000007

27

F

Hercules Poirot

0006811

59

G

Jane Marple

1234567

71

C

下面是我編寫的腳本,大家根據(jù)各自情況可以嘗試一下:?

#/bin/bash
seperator=--------------------
seperator=$seperator$seperator
rows="%-15s| %.7d| %3d| %c\n"
TableWidth=37
printf "%-15s| %-7s| %.3s| %s\n" Name ID Age Grades
printf "%.${TableWidth}s\n" "$seperator"
printf "$rows" "Sherlock Holmes" 122 23 A
printf "$rows" "James Bond" 7 27 F
printf "$rows" "Hercules Poirot" 6811 59 G
printf "$rows" "Jane Marple" 1234567 71 C

運(yùn)行,其輸出如下:

bash 中的格式化輸出命令:printf

延伸 · 閱讀

精彩推薦
297
主站蜘蛛池模板: 久章草在线视频 | 91 在线 | 久久嗨 | 91美女视频在线观看 | 成人久久久精品国产乱码一区二区 | 亚洲影视中文字幕 | cosplay裸体福利写真 | 久久久久国产成人免费精品免费 | 国产韩国精品一区二区三区久久 | 91成人精品| 成人黄色免费视频 | 黄污视频在线看 | 欧美国产第一页 | 日韩高清影视 | 久久久久国产精品久久久久 | 成年免费观看视频 | 精品国产精品久久 | 欧美一级毛片一级毛片 | qyl在线视频精品免费观看 | av免费提供 | 九九热在线免费观看视频 | 欧洲性xxxxx 亚洲第一精品在线 | 色人阁在线视频 | 日本一级黄色大片 | av电影网站在线观看 | 亚洲一区二区在线 | av成人免费看 | 成人不卡一区二区 | 久草最新在线 | 99国产精品自拍 | 偿还的影视高清在线观看 | 精品一区二区三区免费看 | 热99在线视频 | 色播亚洲 | 一区二区三区四区高清视频 | 成人精品久久久 | 18被视频免费观看视频 | 国产成人高清在线观看 | 精品久久中文字幕 | 中文字幕 日本 | 日本在线不卡一区二区 |