1. 程式人生 > 其它 >Shell printf命令

Shell printf命令

目錄

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>