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