printf <FORMAT> <ARGUMENTS...>
使用示例:
printf "FirstName: %s\nLastName: %s\n" "Toby" "Zhao"
我们称<FORMAT>中的 %s 为分类符。
下面是 printf 可以使用的分类符表:
分类符 | 描述 |
---|---|
%b | 打印相关参数并解释其中带有反斜杠“\”的特殊字符 |
%q | 以 Shell 引用的格式打印相关参数,使其可以在标准输入中重用 |
%d | 以带符号十进制数的格式打印相关参数 |
%i | 与 %d 相同 |
%o | 以无符号八进制数的格式打印相关参数 |
%u | 以无符号十进制数的格式打印相关参数 |
%x | 以无符号小写十六进制数的格式打印相关参数 |
%X | 与 %x 相同,但是为大写 |
%f | 以浮点数的格式解析并打印相关参数 |
%e | 以双精度浮点数<N>+e<N>或<N>-e<N>的格式打印相关参数 |
%E | 与 %e 相同,只是用大写字母 E |
%g | 以 %f 或 %e 的格式打印相关参数 |
%G | 以 %f 或 %E 的格式打印相关参数 |
%c | 以字符的格式打印相关参数,并且只打印参数中的第一个字符 |
%s | 以字符串的格式打印相关参数 |
%n | 指定打印的字符个数 |
%% | 打印一个“%”字符 |
在 printf 命令的 <FORMAT> 字符串中我们还可以使用如下的转义字符:
分类符 | 描述 |
---|---|
" | 打印双引号 |
\NNN | 用八进制的值表示一个 ASCII 字符,例如 \101,即 65,表示字符“A” |
\ | 打印一个反斜杠 “\” |
\a | 发出警告音 |
\b | 删除前一个字符 |
\f | 换页符,在某些实现中会清屏,有些会换行 |
\n | 换行 |
\r | 从行头开始,和换行不一样,仍在本行 |
\t | Tab键(制表符) |
\v | 竖直tab(垂直制表符),和 \f 相似,不同的机器显示有所不同,通常会引起换行 VERTICAL TAB 或 CTRL-K |
\xHH | 用十六进制的值表示一个 ASCII 字符,例如 \x41,即 65,表示字符 “A” |
echo 也支持转义字符,但是要加上“-e”选项。
有时,我们需要使用 ${} 来避免一些歧义。
例如:
LOGDIR="var/log/"
echo "The log file is $LOGDIRmessage"
其输出结果:
The log file is
Bash 尝试查找 LOGDIRmessage 变量,但是找不到。为了避免这种歧义,我们可以使用 ${} 语法,如下所示:
LOGDIR="var/log/"
echo "The log file is ${LOGDIR}message"
其输出结果:
The log file is /var/log/message
本文参考自 《Linux Shell命令行及脚本编程实例详解 》
网友评论