Shell printf命令
阿新 • • 發佈:2021-09-03
目錄
1.printf
Shell 的另一個輸出命令 printf
。printf 比 echo 移植性好。
printf 使用引用文字或空格分割引數,不會像 echo 自動換行。
printf
命令語法:
printf format-string [arguments...]
引數:
format-string
:格式控制字串argument
:引數列表
例項:
printf "%-10s %-8s %-4s\n" 姓名 性別 體重kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 楊過 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
執行結果:
姓名 性別 體重kg
郭靖 男 66.12
楊過 男 48.65
郭芙 女 47.23
%s %c %d %f
都是格式替代符,%s
輸出一個字串,%d
整型輸出,%c
輸出一個字元,%f
輸出實數。以小數形式輸出。
%-10s
指一個寬度為 10 個字元(-
表示左對齊,沒有則表示右對齊),任何字元都會被顯示在10個字元寬度內。不足以空格填充,超過依舊將內容全部顯示。
%-4.2f
指格式化為小數,.2
指保留2位小數。
例項:
# format-string為雙引號 printf "%d %s\n" 1 "abc" # 單引號、雙引號效果一樣 printf '%d %s\n' 1 "abc" # 沒有引號也可以 printf %s "abc" # 格式只指定了一個引數,多出的引數任會按格式輸出,format-string 被重用 printf "%s" "abc" "def" printf "%s\n" "abc" "def" printf "%s %s %s\n" a b c d e f # 沒有引數時,%s用NULL代替,%d用0代替 printf "%s and %d \n"
執行結果:
1 abc
1 abc
abcabcdefabc
def
a b c
d e f
and 0
2.printf 的轉義序列
\b
:後退。換行符在此格式下有效。
例項:
printf "a string, no processing:<%s>\n" "A\nB"
printf "a string, no processing:<%b>\n" "A\nB"
執行結果:
a string, no processing:<A\nB>
a string, no processing:<A
B>