轉自:http://blog.chinaunix.net/uid-9525959-id-2001528.html
printf FORMAT [ARGUMENT]...
printf OPTION
【功能】
格式化並打印數據.
【舉例】
*打印整數和字符串:
$printf 'the integer is:%d\nthe string is: %s\n' 3 "test"
輸入之后,輸出如下:
the integer is:3
the string is: test
這里,使用單引號雙引號都行;注意最后要有回車,否則下一個提示行和輸出跑到一行了。
*不用引號打印一個參數的情況:
$printf %s test
輸入之后,輸出如下:
testquietheart@ubuntu$
從這里可以看出來,test是待打印的字符,quietheart@ubuntu$是我的機器命令提示符號,兩者在一行。
*不用引號打印多個參數的情況:
$printf %s first second
輸入之后,輸出如下:
firstsecondquietheart@ubuntu$
*格式只指定了一個,但是多余一個參數:
$printf "%s\n" first second
輸入之后,輸出如下:
first
second
注意這里的回車,字符串仍舊可以輸出。
*指定的格式少於參數:
$printf "%s %s %s %s\n" a b c d e f g h i j k l m n
輸入之后,輸出如下:
a b c d
e f g h
i j k l
m n
這里,該情況是前面指定一個格式的情況擴展。
*類似echo -n的輸出,不自動換行:
$my_var="abc123"
$printf $my_var
輸入之后輸出如下:
abc123quietheart@ubuntu$
如果echo輸出會自動換行,這里沒有自動換行,這和echo -n的效果相同。
*類似echo的輸出,自動換行:
$printf "$my_var \n"
輸入之后,輸出如下:
abc123
或者$printf '$my_var \n'
輸入之后,輸出如下:
$my_var
這里,這兩個命令類似於echo,需要注意的是不能如下這樣:
$printf "%s \n" $var
因為,變量不可以如此輸出,因為printf命令的ARGUMENT認字符串。
*如果參數沒寫上,那么就用NULL或者0來代替:
$printf "%s and %d \n"
輸入之后,輸出如下:
and 0
【描述】
這個函數類似C語言里的printf,先指定格式,再寫上變量。
不同點,SHELL命令的printf
1.沒有C語言函數里必須的括號;
2.一般情況下,指定FORMAT時候,使用單引號和雙引號均可;
3.某些情況下,不加引號也可以,但是無法處理負責格式;
4.某些情況下,FORMAT可以重用,可以將所有參數都轉換;
5.輸出變量參數之間使用空格或tab分割,不用逗號;
6.某種程度上可以替代echo.