在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux bash中的printf命令詳解

CHANBAEK ? 來源:TIAP ? 作者:TIAP ? 2023-04-13 16:22 ? 次閱讀

Linux 命令行中最簡(jiǎn)單的打印方法是使用 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

其輸出如下所示:

圖片

第一個(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" 是格式,后面的 Prakash 和 21 是參數(shù),這些參數(shù)用于替換前面格式中的占位符 %s 和 %d。

在最簡(jiǎn)單的方式中,printf 的使用跟 echo 類似:

printf "Hello World\\n"

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

圖片

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

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

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

圖片

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

圖片

通過上面的例子可以看到,如果沒有找到匹配的參數(shù),會(huì)使用默認(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 會(huì)被用于第一個(gè)參數(shù),131 會(huì)被用于第二個(gè)參數(shù)。

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

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

規(guī)范格式字符

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

字符 用途
%s 字符串
%c 單個(gè)字符
%d 整數(shù)
%o 八進(jìn)制整數(shù)
%x 十六進(jìn)制整數(shù)
%f 浮點(diǎn)
%b 帶反斜杠轉(zhuǎn)義字符的字符串
%% 百分號(hào)

一些例子

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

$ 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í),這樣顯示會(huì)更規(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)情況下,它是右對(duì)齊的:

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

可以使用中劃線 - 來讓其左對(duì)齊:

$ 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

如果對(duì)字符串使用精度修飾符,它會(huì)指定字符串的最大長(zhǎng)度。 如果字符串較長(zhǎng),則會(huì)在顯示中被截?cái)唷?/p>

$ 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 命令打印如下表格:

名字 身份證 年齡 成績(jī)
福爾摩斯 0000122 23 一個(gè)
詹姆斯·邦德 0000007 27 F
赫拉克勒斯·波洛 0006811 59 G
簡(jiǎn)·馬普爾 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)行,其輸出如下:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11465

    瀏覽量

    212825
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    730

    瀏覽量

    22678
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2117

    瀏覽量

    74790
  • Bash
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    10398
  • Printf
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    14099
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    詳解Linux Bash命令

    Bash 是一種相當(dāng)強(qiáng)大的編程語言,而且也很容易上手。
    發(fā)表于 08-15 09:12 ?1789次閱讀

    bash腳本的test命令詳解

    bash 腳本的 test? 命令用于檢查表達(dá)式的有效性,檢查命令或表達(dá)式為 true 或者 false。此外,它還可以用于檢查文件的類型和權(quán)限。
    發(fā)表于 11-24 15:32 ?4068次閱讀
    <b class='flag-5'>bash</b>腳本<b class='flag-5'>中</b>的test<b class='flag-5'>命令</b><b class='flag-5'>詳解</b>

    Linux系統(tǒng)命令及其使用詳解

    Linux系統(tǒng)命令及其使用詳解
    發(fā)表于 08-20 13:38

    Linux Shell系列教程之Shell printf命令詳解

    )。  如果printf無法進(jìn)行格式的轉(zhuǎn)換,便返回一個(gè)非零的退出狀態(tài)。  好了,對(duì)于Shell printf命令詳解就先進(jìn)行到這里,printf
    發(fā)表于 09-03 13:47

    Linux bash命令

    Shell 是一個(gè)用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設(shè)計(jì)語言。以下是幾種shell版本,bash是默認(rèn)的:sh(全稱 Bourne
    發(fā)表于 07-08 08:25

    Linuxbash的主要介紹

    shell是一個(gè)程序,可以稱之為殼程序,用于用戶與操作系統(tǒng)進(jìn)行交互。用來區(qū)別與核,相當(dāng)于是一個(gè)命令解析器,Shell有很多,這里列出其中幾種 - Bourne SHell(sh) - Bourne
    發(fā)表于 07-11 06:53

    Linux啟動(dòng)過程詳解

    1、Linux 基礎(chǔ)安裝Linux操作系統(tǒng) Linux文件系統(tǒng) Linux常用命令 Linux
    發(fā)表于 11-02 07:01

    Linux關(guān)機(jī)命令詳解

    Linux關(guān)機(jī)命令詳解linux下一些常用的關(guān)機(jī)/重啟命令有shutdown、halt、reboot、及init,它們都 可以達(dá)到重啟
    發(fā)表于 01-18 12:52 ?3712次閱讀

    Linux系統(tǒng)命令及其使用詳解 _120頁

    電子發(fā)燒友網(wǎng)站提供《Linux系統(tǒng)命令及其使用詳解 _120頁.doc》資料免費(fèi)下載
    發(fā)表于 04-18 13:23 ?3次下載

    Linux命令詳解 [兼容模式]pdf免費(fèi)下載

    linux命令詳解pdf,希望對(duì)大家有幫助!
    發(fā)表于 12-15 15:54 ?10次下載

    Linux 自定義 Bash 命令提示符

    眾所周知, bash (the B ourne- A gain Sh ell)是目前絕大多數(shù) Linux 發(fā)行版使用的默認(rèn) shell。
    的頭像 發(fā)表于 08-09 18:11 ?2926次閱讀

    Linux操作系統(tǒng)基礎(chǔ)命令:如何運(yùn)用Bash history

    相信大家平時(shí)都有用 history 命令來查看命令歷史記錄,但是實(shí)際上 history 命令并非只有這個(gè)功能,history 還有很多有用的功能。尤其是 Bash 版本的 histor
    的頭像 發(fā)表于 09-02 11:05 ?2159次閱讀

    Linux系統(tǒng)EXP命令詳解質(zhì)量匯總

    Linux系統(tǒng)EXP命令詳解質(zhì)量匯總
    發(fā)表于 05-14 09:35 ?1次下載

    Linux虛擬機(jī)之tcpdump命令操作詳解

    Linux虛擬機(jī)之tcpdump命令操作詳解
    發(fā)表于 08-12 09:50 ?23次下載

    BASH shell腳本篇—條件命令

    這篇文章介紹下BASH shell的條件相關(guān)的命令,包括:if, case, while, until, for, break, continue。
    的頭像 發(fā)表于 10-11 15:21 ?904次閱讀
    <b class='flag-5'>BASH</b> shell腳本篇—條件<b class='flag-5'>命令</b>
    主站蜘蛛池模板: 亚偷熟乱区视频在线观看 | 激情文学综合丁香 | 欧美18性精品 | 天天插天天操 | 1024视频色版在线网站 | 色综合亚洲天天综合网站 | 国产色片| 午夜两性色视频免费网站 | 天天综合网天天综合色不卡 | 国产www色 | 黄色短视频免费看 | 狠狠干在线观看 | 好吊色7777sao在线视频观看 | 日本人69xxxxx| 好大好硬好深好爽视频h | 夜色321看片资源站 夜色sese | 欧美一区福利 | 国产高清一区二区三区四区 | 午夜在线视频免费 | 亚洲色图22p | 韩国午夜精品理论片西瓜 | 天天干天天操天天爽 | 国产片一级特黄aa的大片 | 国产无套粉嫩白浆 | 台湾久久| aaaaa级毛片免费视频 | 欧美色婷婷天堂网站 | 国产欧美一区二区日本加勒比 | 亚洲福利在线视频 | 色综合激情 | 毛片网站免费 | 日本黄色三级视频 | 亚洲第一免费网站 | 2018天天射| 无人码一区二区三区视频 | 欧美三级午夜伦理片 | 在线视频观看你懂的 | 色国产在线视频一区 | 国内精品免费视频自在线 | 欧美xxxx性特级高清 | 亚洲精品一区二区中文 |