shellprintf命令:格式化输出语句
printf 命令⽤于格式化输出,是echo命令的增强版。它是C语⾔printf()库函数的⼀个有限的变形,并且在语法上有些不同。
注意:printf 由 POSIX 标准所定义,移植性要⽐ echo 好。
如同 echo 命令,printf 命令也可以输出简单的字符串:
1. $printf "Hello, Shell\n"
2. Hello, Shell
3. $
printf 不像 echo 那样会⾃动换⾏,必须显式添加换⾏符(\n)。
printf 命令的语法:
printf  format-string  []
format-string 为格式控制字符串,arguments 为参数列表。
printf()在C语⾔⼊门教程中,功能和⽤法与 printf 命令类似,请查看:
这⾥仅说明与C语⾔printf()函数的不同:
printf 命令不⽤加括号
format-string 可以没有引号,但最好加上,单引号双引号均可。
参数多于格式控制符(%)时,format-string 可以重⽤,可以将所有参数都转换。
arguments 使⽤空格分隔,不⽤逗号。
请看下⾯的例⼦:
1. # format-string为双引号
2. $ printf "%d %s\n" 1 "abc"
3. 1 abc
4. # 单引号与双引号效果⼀样
格式化命令format参数
5. $ printf '%d %s\n' 1 "abc"
6. 1 abc
7. # 没有引号也可以输出
8. $ printf %s abcdef
9. abcdef
10. # 格式只指定了⼀个参数,但多出的参数仍然会按照该格式输出,format-string 被重⽤
11. $ printf %s abc def
12. abcdef
13. $ printf "%s\n" abc def
14. abc
15. def
16. $ printf "%s %s %s\n" a b c d e f g h i j
17. a b c
18. d e f
19. g h i
20. j
21. # 如果没有 arguments,那么 %s ⽤NULL代替,%d ⽤ 0 代替
22. $ printf "%s and %d \n"
23. and 0
24. # 如果以 %d 的格式来显⽰字符串,那么会有警告,提⽰⽆效的数字,此时默认置为 0
25. $ printf "The first program always prints'%s,%d\n'" Hello Shell
26. -bash: printf: Shell: invalid number
27. The first program always prints 'Hello,0'
28. $
注意,根据POSIX标准,浮点格式%e、%E、%f、%g与%G是“不需要被⽀持”。这是因为awk⽀持浮点预算,且有它⾃⼰的printf语句。这样Shell程序中需要将浮点数值进⾏格式化的打印时,可使⽤⼩型的awk程序实现。然⽽,内建于bash、ksh93和zsh中的printf命令都⽀持浮点格式。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。