W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
格式化并輸出結(jié)果。
printf [-v var] format [arguments]
-v var:將結(jié)果輸出到變量var中而不是輸出到標(biāo)準(zhǔn)輸出。
format:輸出格式。
arguments:一到多個(gè)參數(shù)。
轉(zhuǎn)義序列:除了支持printf(1)和printf(3)的轉(zhuǎn)義序列,內(nèi)建printf還支持以下轉(zhuǎn)義序列:
%b 展開(kāi)參數(shù)中的反斜杠轉(zhuǎn)義字符。
%q 將參數(shù)擴(kuò)起以用作shell輸入。
%(fmt)T 根據(jù)strftime(3)中的轉(zhuǎn)義字符來(lái)輸出日期時(shí)間字符串。
返回狀態(tài)為成功除非給出了非法選項(xiàng)、寫錯(cuò)誤、賦值錯(cuò)誤。
# %-5s 格式為左對(duì)齊且寬度為5的字符串代替('-'表示左對(duì)齊),不使用則默認(rèn)右對(duì)齊。
# %-4.2f 格式為左對(duì)齊寬度為4,保留兩位小數(shù)。
printf "%-5s %-10s %-4s\n" NO Name Mark
printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456
printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
printf "%-5s %-10s %-4.2f\n" 03 Jeff 98.4323
# 輸出
NO Name Mark
01 Tom 90.35
02 Jack 89.23
03 Jeff 98.43
# %b %q %(fmt)T 的例子。
# see it again with a newline.
printf "%s\n" 'hello world'
# 展開(kāi)換行符,和上面的結(jié)果一樣。
printf "%b" 'hello world\n'
printf '%q\n' 'a b c'
# 輸出
a\ b\ c
# %z為時(shí)區(qū),%n為換行符。
printf "%(%F %T %z%n)T"
# 輸出
2019-09-10 01:48:07 +0000
printf FORMAT [ARGUMENT]...
printf OPTION
--help 顯示幫助信息并退出。
--version 顯示版本信息并退出。
format:輸出格式。
arguments:一到多個(gè)參數(shù)。
在這里忽略了(%b %q),如果你安裝的coreutils版本支持它們,那么請(qǐng)參考上面的例子。
支持的轉(zhuǎn)義序列:
\" 雙引號(hào)
\\ 反斜杠
\a 響鈴
\b 退格
\c 截?cái)噍敵?\e 退出
\f 翻頁(yè)
\n 換行
\r 回車
\t 水平制表符
\v 豎直制表符
\NNN 八進(jìn)制數(shù) (1到3位數(shù)字)
\xHH 十六進(jìn)制數(shù) (1到2位數(shù)字)
\uHHHH Unicode字符附加4位十六進(jìn)制數(shù)字
\UHHHHHHHH Unicode字符附加8位十六進(jìn)制數(shù)字
%% 百分號(hào)
以及'diouxXfeEgGcs'中的一個(gè)結(jié)尾的C格式規(guī)范,將被轉(zhuǎn)換為正確的類型并處理可變寬度。
# 使用 /usr/bin/printf 確保調(diào)用的不是內(nèi)建命令。
# 當(dāng)然,在你關(guān)閉內(nèi)建printf以及確認(rèn)當(dāng)前環(huán)境沒(méi)有printf函數(shù)的情況下,可直接使用printf,詳見(jiàn)末尾"注意"的鏈接。
# 按行打印數(shù)組和關(guān)聯(lián)數(shù)組的下標(biāo)及值。
# 聲明數(shù)組可以不加'declare -a'或'local -a'(在函數(shù)內(nèi)聲明的局部變量)。
arr=('line1' 'line2')
/usr/bin/printf "%s\n" ${!arr[@]}
# 輸出下標(biāo)
0
1
/usr/bin/printf "%s\n" ${arr[@]}
# 輸出值
line1
line2
#聲明關(guān)聯(lián)數(shù)組(也就是字典)必須加'declare -A'或'local -A'(在函數(shù)內(nèi)聲明的局部變量)。
declare -A assoc_arr=(['key1']='value1' ['key2']='value2')
/usr/bin/printf "%s\n" ${!assoc_arr[@]}
# 輸出鍵。
key2
key1
/usr/bin/printf "%s\n" ${assoc_arr[@]}
# 輸出值。
value2
value1
返回狀態(tài)為成功除非給出了非法選項(xiàng)等。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: