美文网首页Shell 脚本成长笔记
Shell 使用 printf 格式化打印输出变量

Shell 使用 printf 格式化打印输出变量

作者: 赵者也 | 来源:发表于2017-03-12 16:24 被阅读78次

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命令行及脚本编程实例详解

相关文章

网友评论

    本文标题:Shell 使用 printf 格式化打印输出变量

    本文链接:https://www.haomeiwen.com/subject/wqotnttx.html