printf
先來看乙個簡單的例子:
使用命令
printf 「hello,world\n」,
輸出:hello,world
再使用echo 「hello,world\n」,輸出為
:hello,world\n
案例二:
使用命令
printf "%s\n" hello,world
輸出結果為:hello,world
printf命令的完整語法有兩個部分
:printg format-string [arguments]
第一部分為描述格式規格的字串,
他的嘴尖提供方式是放在引號內的字串常數
.第二部分為引數列表,
例如字串或變數值的列表
,該列表需與格式規格相對應
.printf使用
format
字串控制輸出
.字串裡的純字元都會如實列印
.echo
的轉義序列會被解釋.包括
%與乙個字母的格式指示符
.用來指示相對應的引數字串的格式化
.printf的轉義序列
序列說明
\a警告字元,
通常為ascii
的bel
字元\b
後退\c
抑制(不顯示
)輸出結果中任何結尾的換行字元;而且
,任何留在引數裡的字元
,任何接下來的引數以及任何留在格式字串中的字元
,都被忽略
\f換頁
\n換行
\r回車
\t水平製表符
\v垂直製表符
\\乙個字面上的反斜槓字元
\ddd
表示1到
3位數八進位制的字元
.盡在格式字串中有效
\0ddd
表示1到
3位的八進位制字元
轉義序列只在格式字串中會被特別對待,
也就是說
,出現在引數字串裡的轉義序列不會被解釋
:使用命令:printf "%s\n" "abc\ndef"
輸出結果:abc\ndef
printf格式指示符
%cascii字元
.顯示相對應引數的第乙個字元
%d,%i
十進位制整數
%e浮點格式([-d].precisione [+-dd])
%e浮點格式([-d].precisione [+-dd])
%g%e或
%f轉換
,看哪乙個較短
,則刪除結尾的零
%g%e或
%f轉換
,看哪乙個較短
,則刪除結尾的零
%s字串
%u不帶正負號的十進位制值
%x不帶正負號的十六進製制.使用a
至f表示10至15
%%字面意義的%
%x不帶正負號的十六進製制.使用a
至f表示10至15
精度的含義
轉換精度含義
%d,%i,%o,%u,%x,%x
要列印的最小位數.
當值的位數少於此數字時
,會在前面補零
.預設精度為
1%e,%e
要列印的最小位數.
當值的位數少於此數字時
,會在小數點後面補零
,預設為精度為
6.精度為
0則表示不顯示小數點小數點右邊的位數
%f小數點右邊的位數
%g,%g
有效位數的最大數目
%s要列印字元的最大數目
案例一:
使用命令:printf "%.5d\n" 15
輸出:00015
案例二:
使用命令:printf "%.10s\n" "a very long string"
輸出:a very lon
案例三:
使用命令:printf "%.2f\n" 123.4567
輸出:123.46
printf的標誌
字元意義
-將字段裡已格式化的值向左對齊
空格(space)
在正值前置乙個空格,
在負值前置乙個負號
+總是在數值之前放置乙個正號或負號,
即便是正值也是
#下列形式選擇其一:%o
有乙個前置的
o;%x與%x
分別前置的0x與
0x.%e,%e與%f
總是在結果中有乙個小數點
;%g與
%g為沒有結尾的零.0
以零填補輸出,
而非空白
.這僅發生在字段寬度大於轉換後的情況.在
c語言裡
,該標誌應用到所有輸出格式
,及時是非數字的值也是一樣.對於
printf
命令而言
,它僅應用到數值格式
案例一:
使用命令:printf "%-20s%-15s%10.2f\n" "shan" "zhang" 35
輸出:shan zhang 35.00
分析:%-20s表示乙個左對齊、寬度為
20個字元字串格式,不足
20個字元,右側補充相應數量的空格符。
%-15s表示乙個左對齊、寬度為
15個字元字串格式。
%10.2f表示右對齊、
10個字元長度的浮點數,其中乙個是小數點,小數點後面保留兩位。
案例二:
使用命令:printf "|%10s|\n" hello
輸出:| hello|
分析:%10s
表示右對齊
,寬度為
10的字串
,如不足是個字串
,左側補充相應數量的空格數
.案例三:
使用命令:printf "|%-10s|\n" hello
輸出:|hello |
分析:和案例二比較一下
案例四:
使用命令:printf "%x %#x\n" 15 15
輸出:f 0xf
分析:如果
#標誌和
%x,%x
搭配使用
,在輸出十六進製制數字時
,前面回家
0x或者
0x字首
.使用標誌符的作用主要是為了動態的指定寬度和精度.
綜合案例分析:
字串向左向右對齊案例:
使用命令:printf "|%-10s| |%10s|\n" hello world
輸出|hello | | world|
空白標誌案例:
使用命令: printf "|% d| |% d|\n" 15 -15
輸出:| 15| |-15|
+標誌案例
:使用命令:printf "|%+d| |%+d|\n" 15 -15
輸出:|+15| |-15|
#標誌案例
:使用命令:printf "%x || %#x\n" 15 15
輸出:f || 0xf
0標誌案例
:使用命令:printf "%05d\n" 15
輸出:00015
對於轉換指示符%b,%c與%s
而言,相對應的引數都是為字串.否則
,他們會被解釋為
c語言的數字常數
(開頭的
0位八進位制
,以及開頭的0x與
0x為十六進製制
).更進一步說
,如果引數的第乙個字元為單引號或雙引號
,則縣桂英的數值是字串的第二個字元的
ascii值:
命令:printf "%s is %d \n" a "'a"
輸出:a is 97
當引數多於格式指示符時,
格式指示符會根據需要再利用
.這種做法在引數列表長度未知時時很方便的
,例如來自萬用字元表示式
.如果留在格式字串裡剩下的指示符比引數多時
,如果是數值轉換
,則遺漏的值會被看做是零
,如果是字串轉換
,則被視為空字串
(雖然可以這麼用
,但比較好的方式應該是一一對應關係
,即提供的引數數目和格式字串數目相同
).如果
printf
無法進行格式的轉換
,便返回乙個非零的退出狀態
.
shell printf命令 格式化輸出語句
printf 命令用於格式化輸出,是echo命令的增強版。它是c語言printf 庫函式的乙個有限的變形,並且在語法上有些不同。注意 printf 由 posix 標準所定義,移植性要比 echo 好。如同 echo 命令,printf 命令也可以輸出簡單的字串 printf hello,shell...
shell printf命令 格式化輸出語句
printf 命令用於格式化輸出,是echo命令的增強版。它是c語言printf 庫函式的乙個有限的變形,並且在語法上有些不同。注意 printf 由 posix 標準所定義,移植性要比 echo 好。如同 echo 命令,printf 命令也可以輸出簡單的字串 printf hello,shell...
shell printf命令 格式化輸出語句
printf 命令用於格式化輸出,是echo命令的增強版。它是c語言printf 庫函式的乙個有限的變形,並且在語法上有些不同。注意 printf 由 posix 標準所定義,移植性要比 echo 好。如同 echo 命令,printf 命令也可以輸出簡單的字串 printf hello,shell...