printf 命令模仿 C 程序庫里的 printf()庫程序。幾乎復(fù)制了該函數(shù)的所有功能,如同 echo 命令,printf 命令可以輸出簡單的字符串:
printf “hello world\n”
通過觀察 echo 和 printf 的輸出的不同,可以發(fā)現(xiàn) echo 會提供自動換行,printf 不會提供自動換行,所以那些轉(zhuǎn)移序列在 printf 發(fā)揮的很好。
printf 命令的完整語法分為兩部分:
printf format-string [arguments....]
分析:printf 是命令,不解釋。format-string 為格式控制字符串,arguments 為參數(shù)列表。
printf 命令不用加括號。
format-string 可以沒有引號,但是最好加上,單雙引號均可
參數(shù)多于格式控制符(%)時,format-string 可以重用,可以將所有參數(shù)都轉(zhuǎn)換
arguments:使用空格分割,不用逗號。
printf “%d , %s\n” 1 abc
這里輸出的是1 , abc。有沒有引號都可以。
如果沒有 arguments %s 用 NULL 表示,%d 用 0 表示
例如:printf “%s , %d\n”
輸出結(jié)果為 ,0
format-string 的可重用性:printf “%s” abc def==>abcdef
如果以%d 來顯示字符,會有警告,提示無效的數(shù)字,此時的默認(rèn)值為 0。例如:printf "%d\n" abc==>bash: printf: abc: invalid number
0;
既然 shell 的 printf 和 C 的 printf 差不多,那么他們也都支持%。
例如:printf “%s\n” hello
輸出 hello 換行。因為各種版本的 liunx 的各種版本對 echo 的移植性不好,所以引入了 printf,printf 可以說是 echo 的加強(qiáng)版,是由 POSIX 標(biāo)準(zhǔn)定義。