printf
格式化並輸出結果。
目錄
內建命令
概要
1printf [-v var] format [arguments]
主要用途
- 格式化參數並輸出。
選項
1-v var:將結果輸出到變量var中而不是輸出到標準輸出。
參數
format:輸出格式。
arguments:一到多個參數。
1轉義序列:除了支持printf(1)和printf(3)的轉義序列,內建printf還支持以下轉義序列:
2
3%b 展開參數中的反斜槓轉義字符。
4%q 將參數擴起以用作shell輸入。
5%(fmt)T 根據strftime(3)中的轉義字符來輸出日期時間字符串。
返回值
返回狀態爲成功除非給出了非法選項、寫錯誤、賦值錯誤。
例子
1# %-5s 格式爲左對齊且寬度爲5的字符串代替('-'表示左對齊),不使用則默認右對齊。
2# %-4.2f 格式爲左對齊寬度爲4,保留兩位小數。
3
4printf "%-5s %-10s %-4s\n" NO Name Mark
5printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456
6printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
7printf "%-5s %-10s %-4.2f\n" 03 Jeff 98.4323
8
9# 輸出
10NO Name Mark
1101 Tom 90.35
1202 Jack 89.23
1303 Jeff 98.43
14
15
16# %b %q %(fmt)T 的例子。
17# see it again with a newline.
18printf "%s\n" 'hello world'
19# 展開換行符,和上面的結果一樣。
20printf "%b" 'hello world\n'
21
22printf '%q\n' 'a b c'
23# 輸出
24a\ b\ c
25
26# %z爲時區,%n爲換行符。
27printf "%(%F %T %z%n)T"
28# 輸出
292019-09-10 01:48:07 +0000
注意
- 該命令是bash內建命令,相關的幫助信息請查看
help
命令。
外部命令
概要
1printf FORMAT [ARGUMENT]...
2printf OPTION
主要用途
- 格式化參數並輸出。
選項
1--help 顯示幫助信息並退出。
2--version 顯示版本信息並退出。
參數
format:輸出格式。
arguments:一到多個參數。
1在這裏忽略了(%b %q),如果你安裝的coreutils版本支持它們,那麼請參考上面的例子。
2支持的轉義序列:
3
4\" 雙引號
5\\ 反斜槓
6\a 響鈴
7\b 退格
8\c 截斷輸出
9\e 退出
10\f 翻頁
11\n 換行
12\r 回車
13\t 水平製表符
14\v 豎直製表符
15\NNN 八進制數 (1到3位數字)
16\xHH 十六進制數 (1到2位數字)
17\uHHHH Unicode字符附加4位十六進制數字
18\UHHHHHHHH Unicode字符附加8位十六進制數字
19%% 百分號
20
21以及'diouxXfeEgGcs'中的一個結尾的C格式規範,將被轉換爲正確的類型並處理可變寬度。
例子
1# 使用 /usr/bin/printf 確保調用的不是內建命令。
2# 當然,在你關閉內建printf以及確認當前環境沒有printf函數的情況下,可直接使用printf,詳見末尾"注意"的鏈接。
3
4# 按行打印數組和關聯數組的下標及值。
5
6# 聲明數組可以不加'declare -a'或'local -a'(在函數內聲明的局部變量)。
7arr=('line1' 'line2')
8/usr/bin/printf "%s\n" ${!arr[@]}
9# 輸出下標
100
111
12/usr/bin/printf "%s\n" ${arr[@]}
13# 輸出值
14line1
15line2
16
17#聲明關聯數組(也就是字典)必須加'declare -A'或'local -A'(在函數內聲明的局部變量)。
18declare -A assoc_arr=(['key1']='value1' ['key2']='value2')
19/usr/bin/printf "%s\n" ${!assoc_arr[@]}
20# 輸出鍵。
21key2
22key1
23/usr/bin/printf "%s\n" ${assoc_arr[@]}
24# 輸出值。
25value2
26value1
返回值
返回狀態爲成功除非給出了非法選項等。
注意
-
該命令是
GNU coreutils
包中的命令,相關的幫助信息請查看man -s 1 printf
或info coreutils 'pwd invocation'
。 -
啓動或關閉內建命令請查看
enable
命令,關於同名優先級的問題請查看builtin
命令的例子部分的相關討論。 -
我通過和
bug-bash@gnu.org
的交流,得到了關於這幾個格式說明符%b %q %(fmt)T
的解釋:printf(1)中的%b格式說明符是printf(3)支持的格式之外增加的一個POSIX特性。
%q和%T說明符是非標準的,並且不受所有獨立實現的printf的支持。
更多細節請參考鏈接:
- POSIX printf
APPLICATION USAGE
段落的第五節。 - POSIX printf格式說明符
的
Description
段落。
- POSIX printf
來源:https://github.com/jaywcjlove/linux-command
最後修改於: Wednesday, January 31, 2024
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。