美文网首页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