在类似Unix的操作系统上,printf命令将参数插入用户定义的文本字符串中,从而创建格式化的输出。
查看英文版
1 printf 运行系统环境
2 printf 描述
3 printf 语法
4 printf 例子
Linux
查看英文版
printf FORMAT [ARGUMENT]...
printf OPTION
选件
FORMAT | FORMAT控制输出,并定义将在输出中表达ARGUMENT的方式。请参阅下面的“FORMA”部分。 |
ARGUMENT | 根据FORMAT的定义,每个ARGUMENT都将插入到格式化输出中。 |
- help | 显示帮助消息,然后退出。 |
- version | 显示版本信息,然后退出。 |
格式
该格式字符串包含三种类型的对象:
这是一个使用这三种对象的快速示例:
" printf" My name is\"%s \".\ nIt's a pleasure to meet you." "John"
此命令产生输出:
My name is "John". It's a pleasure to meet you.
在这里,FORMAT用双引号(“)括起来。有一个转换规范:%s,它将参数” John“解释为字符串并将其插入输出中。有三个转义的字符序列:两次出现\ “和\ n出现一次。序列\“转换为文字双引号;以反斜杠转义,以便printf知道将其视为文字字符而不是FORMAT字符串的结尾。\ n是换行符的序列,并告诉printf 开始新的一行并从那里继续输出。
的功率的printf就在于,对于任何给定的格式字符串,则ARGUMENT s时,可以改变影响输出。例如,可以仅通过更改参数“ John”来更改以上示例中命令的输出。如果在脚本中使用,则此参数可以设置为变量。例如,命令
printf "Hi, I'm %s. \s. \n" $ LOGNAME
...将插入环境变量 $ LOGNAME的值,该值是运行命令的人的用户名。
转换规格
每个转换规范都以%开头,以转换字符结尾。在%和转换字符之间可能有以下顺序:
- | 减号。这告诉printf向左调整参数的转换。 |
number | 一个整数,它指定字段的宽度;printf将在至少数字字符宽的字段中打印ARGUMENT的转换。如有必要,将在左侧填充(或在需要进行左调整的情况下在右侧填充)以填充字段宽度。 |
. | 一个周期,它将字段宽度与精度分开。 |
number | 整数,精度,它指定要从字符串中打印的最大字符数,或者浮点值的小数点后的位数,或者整数的最小位数。 |
h or l | 它们分别区分短整数和长整数,通常仅在计算机编程时才需要。 |
转换字符本身(告诉printf需要什么样的参数)如下:
转换字符 | 参数类型 |
---|---|
d,i | 整数,表示为十进制数。 |
o | 整数,表示为无符号八进制数。 |
x,X | 整数,表示为无符号十六进制数 |
u | 整数,表示为无符号十进制数。 |
c | 整数,表示为字符。整数对应于字符的ASCII码。 |
s | 一个字符串。 |
F | 浮点数,默认精度为6。 |
e,E | 以科学计数法表示的浮点数,默认精度为6。 |
p | 内存地址指针。 |
% | 没有转换;而是打印文字百分号(“ % ”)。 |
宽度或精度可以用星号(“ * ”)表示;如果是这样,星号将读取一个必须为整数的参数,并使用该值。例如,
printf "%.* s" 5 "abcdefg"
...产生以下输出:
abcde
下表说明了printf使用各种FORMAT字符串输出其ARGUMENT(“ computerhope ”)的方式。每个字符串都用引号引起来,以便更轻松地查看每个字符串的确切范围:
格式字符串 | 参数字符串 | 输出字符串 |
---|---|---|
“%s” | “computerhope” |
“computerhope” |
“%8s” | “computerhope” |
“computerhope” |
“%.8s” | “computerhope” |
“computer” |
“%-8s” | “computerhope” |
“computerhope” |
“%-15s” | “computerhope” |
“computerhope” |
“%15.8s” | “computerhope” |
“computer” |
“%-15.8” | “computerhope” |
“computer” |
“%-15.2” | “computerhope” |
“ co” |
请注意,printf要求转换字符串的数量与ARGUMENT的数量相匹配。它一对一地映射它们,并期望为每个转换字符串找到一个准确的ARGUMENT。唯一的例外是使用星号的转换字符串。这样的字符串每个都需要两个参数。
转换字符串始终从左向右解释。例如,以下printf命令:
“ printf”%d puls %5f%s%。* f。5 5.05“equals” 3 10.05
...产生以下输出:
5 plus 5.050000 equals 10.050。
解释的转义字符序列
以下字符序列由printf解释为特殊字符:
\“ | 打印双引号(“) |
\\ | 打印反斜杠(\) |
\a | 发出警报(按铃) |
\b | 打印退格键 |
\c | 指示printf不产生进一步的输出 |
\e | 打印转义字符(ASCII代码27) |
\f | 打印换页 |
\n | 打印换行符 |
\r | 打印回车 |
\t | 打印水平标签 |
\v | 打印垂直标签 |
\NNN | 打印八进制值NNN(1到3位数字)的字节 |
\xHH | 打印一个十六进制值HH(1到2位数字)的字节 |
\uHHHH | 打印具有十六进制值HHHH(4位)的Unicode字符 |
\UHHHHHHHH | 打印具有十六进制值HHHHHHHH(8位)的Unicode字符 |
%b | 将ARGUMENT打印为带有“ \ ”转义符的字符串,其解释如上所列,但八进制转义符的格式为\ 0或\ 0 NN |
壳牌行情
注意您的外壳解释带引号的字符串的方式。如果您的外壳无法正确解释带引号的字符串,请尝试使用单引号而不是双引号。
查看英文版
printf 'hello\nworld\n!'
打印以下输出:
hello world !
printf "%b" 'hello\nworld\n!'
打印与上述示例相同的输出。
printf "Your home folder is %s.\n" $HOME
打印一个字符串,告诉您主目录的位置。
查看英文版
pack | pagesize | parted | partprobe | paste | passwd | pax | pcat | pg | perl | pgrep | pico | pine | ping | pr | printenv | priocntl | pstree | pvs | pwd |
未知的网友