写格式化输出。
printf Format [ Argument ... ]
printf 命令转换、格式化并写 Argument 参数到标准输出。Argument 参数是由 Format 参数控制格式化的。格式化输出行不能超出 LINE_MAX 字节长度。
下列环境变量影响 printf 命令的执行:
Format 参数是包含三种对象类型的一个字符串:
\\ | 反斜杠 |
\a | 警告 |
\b | 退格 |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 跳格 |
\v | 垂直跳格 |
\ddd | ddd 是 1、2 或 3 位八进制数字。这些转义序列作为由八进制数指定的具有数字值的字节显示。 |
Argument 参数是一个或多个字符串的列表,它在 Format 参数的控制下被写到标准输出。
Format 参数在必要的情况下会经常重新使用以满足 Argument 参数。 将好像提供了空字符串 Argument 一样评估任何额外的 c 或者 s 转换规范;其它额外转换规范将好像提供了 0 Argument 一样评估。此处 Format 参数不包含转换规范仅出现 Argument 参数,结果是不确定的。
每个 Format 参数中的转换规范都具有如下顺序的语法:
- | 转换结果在字段中左对齐。 |
+ | 符号转换结果常以符号(+ 或者 -)开始。 |
空格 | 如果符号转换的第一个字符不是符号,结果的前缀将是空格。如果空格和 + 选项字符都显示,则忽略空格选项字符。 |
# | 此选项指定值转换到备用格式。对于 c、d、i, u 和 s 转换,选项没有作用。对于 o 转换,它增加精度来强制结果的第一数字是 a、0(零)。对于 x 和 X 转换,非零结果分别具有 0x 或 0X 前缀。对于 e、E、 f、g 和 G 转换, 结果通常包含基数字符,即使基数字符后没有数字。对于 g 和 G 转换,结尾零不象通常一样除去。 |
0 | 对于 d、i、o、 u、x、e、 E、f、g 和 G 转换, 前导零(跟在符号或底数的后面)用于填充字段宽度,将不用空格填充。如果显示 0(零)和 -(减号)选项,0(零)选项被忽略。对于 d、i、o、u、x 和 X 转换, 如果指定精度,0(零)选项将被忽略。 |
注:
其它转换,没有定义其行为。 |
% | 不进行转换。打印一个 %(百分号)。 |
d, i | 接受整数值并将它转换为有符号的十进制符号表示法。 精度指定显示的最小数字位数。如果值转换后可以用更少的位数来表示,将使用前导零扩展。缺省精度是 1。精度为零的零值转换的结果是空字符串。用零作为前导字符来指定字段宽度,导致用前导零填充字段宽度值。 |
o | 接受整数值并将它转换为有符号的八进制符号表示法。 精度指定显示的最小数字位数。如果值转换后可以用更少的位数来表示,将使用前导零扩展。缺省精度是 1。精度为零的零值转换的结果是空字符串。用零作为前导字符来指定字段宽度,导致用前导零填充字段宽度值。不用八进制值表示字段宽度。 |
u | 接受整数值并将它转换为无符号的十进制符号表示法。 精度指定显示的最小数字位数。如果值转换后可以用更少的位数来表示,将使用前导零扩展。缺省精度是 1。精度为零的零值转换的结果是空字符串。用零作为前导字符来指定字段宽度,导致用前导零填充字段宽度值。 |
x, X | 接受整数值并将它转换为十六进制符号表示法。 字母 abcdef 用于 x 转换,字母 ABCDEF 用于 X 转换。精度指定显示的最小数字位数。如果值转换后可以用更少的位数来表示,将使用前导零扩展。缺省精度是 1。精度为零的零值转换的结果是空字符串。用零作为前导字符来指定字段宽度,导致用前导零填充字段宽度值。 |
f | 接受浮点或者双精度值并将它转换为十进制符号表示法,格式为 [-] ddd.ddd。基数字符(在这里显示为十进制点)后的数字位数等于规定的精度。 LC_NUMERIC 语言环境编目确定在这个格式中使用的基数字符。如果不指定精度,则输出六个数字。如果精度是 0(零),将不显示基数字符。 |
e, E | 接受浮点或者双精度值并将它转换为指数表示的形式 [-] d.dde{+|-}dd。 在基数字符前有一个数字(在这里显示为十进制点),基数字符后的数字位数等于规定的精度。 LC_NUMERIC 语言环境编目确定在这个格式中使用的基数字符。如果不指定精度,则输出六个数字。如果精度是 0(零),将不显示基数字符。E 转换字符在指数前生成带 E 而不是带 e 的数字。指数通常至少包含两个数字。然而,如果要打印的指数值大于两个数字,必要时需要打印附加指数数字。 |
g、G | 接受浮点和双精度值并转换为 f 或 e 转换字符的样式(或在 G 转换的情况下是 E),用精度指定有效数字的个数。尾零将从结果中除去。基数字符只有在其后是数字时显示。使用的样式取决于转换的值。样式 g 仅在转换的指数结果小于 -4,或大于或等于精度时使用。 |
c | 接受值将其作为字符串并打印字符串中的第一个字符。 |
s | 接受值将其作为字符串并打印字符串中的字符直到字符串结束或者达到精度指示的字符个数。如果没有指定精度,打印全部字符直到出现第一个空字符。 |
b | 接受值将其作为字符串,可能包含反斜杠转义序列。 打印来自转换字符串的字节直到字符串结束或者达到精度规范指示的字节数。如果没有指定精度,打印全部字节直到出现第一个空字符。 |
支持下列反斜杠转义序列:
该命令返回以下出口值:
0 | 成功完成。 |
>0 | 发生错误。 |
printf "%5d%4d\n" 1 21 321 4321 54321
产生下列输出:
1 21 3214321 54321 0
三次使用 Format 参数打印所有给定字符串。0(零)由 printf 命令提供以满足最后的 %4d 转换规格。
printf "%c %c\n" 78 79
产生下列输出:
7 7
/usr/bin/printf | 包含 printf 命令。 |
/usr/bin/echo 命令。
printf 子例程 AIX 5L Version 5.2 Technical Reference: Base Operating System and Extensions。
AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 Input and Output Handling Programmer's Overview 描述文件、命令和用于低级、流、终端和异步 I/O 接口的子例程。
在 AIX 5L Version 5.2 National Language Support Guide and Reference 中的 National Language Support Overview。