printf

printf

格式化并输出结果。

目录

内建命令

概要

printf [-v var] format [arguments]

主要用途

  • 格式化参数并输出。

选项

-v var:将结果输出到变量var中而不是输出到标准输出。

参数

format:输出格式。

arguments:一到多个参数。

转义序列:除了支持printf(1)和printf(3)的转义序列,内建printf还支持以下转义序列:

%b       展开参数中的反斜杠转义字符。
%q       将参数扩起以用作shell输入。
%(fmt)T  根据strftime(3)中的转义字符来输出日期时间字符串。

返回值

返回状态为成功除非给出了非法选项、写错误、赋值错误。

例子

# %-5s 格式为左对齐且宽度为5的字符串代替('-'表示左对齐),不使用则默认右对齐。
# %-4.2f 格式为左对齐宽度为4,保留两位小数。

printf "%-5s %-10s %-4s\n" NO Name Mark
printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456
printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
printf "%-5s %-10s %-4.2f\n" 03 Jeff 98.4323

# 输出
NO    Name       Mark
01    Tom        90.35
02    Jack       89.23
03    Jeff       98.43

# %b %q %(fmt)T 的例子。
# see it again with a newline.
printf "%s\n" 'hello world'
# 展开换行符,和上面的结果一样。
printf "%b" 'hello world\n'

printf '%q\n' 'a b c'
# 输出
a\ b\ c

# %z为时区,%n为换行符。
printf "%(%F %T %z%n)T"
# 输出
2019-09-10 01:48:07 +0000

注意

  1. 该命令是bash内建命令,相关的帮助信息请查看help命令。

外部命令

概要

printf FORMAT [ARGUMENT]...
printf OPTION

主要用途

  • 格式化参数并输出。

选项

--help 显示帮助信息并退出。
--version 显示版本信息并退出。

参数

format:输出格式。

arguments:一到多个参数。

在这里忽略了(%b %q),如果你安装的coreutils版本支持它们,那么请参考上面的例子。
支持的转义序列:

\"          双引号
\\          反斜杠
\a          响铃
\b          退格
\c          截断输出
\e          退出
\f          翻页
\n          换行
\r          回车
\t          水平制表符
\v          竖直制表符
\NNN        八进制数 (1到3位数字)
\xHH        十六进制数 (1到2位数字)
\uHHHH      Unicode字符附加4位十六进制数字
\UHHHHHHHH  Unicode字符附加8位十六进制数字
%%          百分号

以及'diouxXfeEgGcs'中的一个结尾的C格式规范,将被转换为正确的类型并处理可变宽度。

例子

# 使用 /usr/bin/printf 确保调用的不是内建命令。
# 当然,在你关闭内建printf以及确认当前环境没有printf函数的情况下,可直接使用printf,详见末尾"注意"的链接。

# 按行打印数组和关联数组的下标及值。

# 声明数组可以不加'declare -a'或'local -a'(在函数内声明的局部变量)。
arr=('line1' 'line2')
/usr/bin/printf "%s\n" ${!arr[@]}
# 输出下标
0
1
/usr/bin/printf "%s\n" ${arr[@]}
# 输出值
line1
line2

#声明关联数组(也就是字典)必须加'declare -A'或'local -A'(在函数内声明的局部变量)。
declare -A assoc_arr=(['key1']='value1' ['key2']='value2')
/usr/bin/printf "%s\n" ${!assoc_arr[@]}
# 输出键。
key2
key1
/usr/bin/printf "%s\n" ${assoc_arr[@]}
# 输出值。
value2
value1

返回值

返回状态为成功除非给出了非法选项等。

注意

  1. 该命令是GNU coreutils包中的命令,相关的帮助信息请查看man -s 1 printfinfo coreutils 'pwd invocation'
  2. 启动或关闭内建命令请查看enable命令,关于同名优先级的问题请查看builtin命令的例子部分的相关讨论。
  3. 我通过和bug-bash@gnu.org的交流,得到了关于这几个格式说明符%b %q %(fmt)T的解释:

    printf(1)中的%b格式说明符是printf(3)支持的格式之外增加的一个POSIX特性。

    %q和%T说明符是非标准的,并且不受所有独立实现的printf的支持。

    更多细节请参考链接:

若文章对你有帮助,可以点赞或打赏支持我们。发布者:Aurora,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/printf/

(0)
AuroraAurora站点维系者
上一篇 2024年 3月 1日 下午4:37
下一篇 2024年 3月 1日 下午4:38

相关推荐

  • 环境设置

    如果您想要设置 C++ 语言环境,您需要确保电脑上有以下两款可用的软件,文本编辑器和 C++ 编译器。 文章目录文本编辑器C++ 编译器安装 GNU 的 C/C++ 编译器UNIX…

    2024年 3月 18日
  • lvscan

    文章目录lvscan补充说明语法选项实例 lvscan 扫描逻辑卷 补充说明 lvscan命令 用于扫描当前系统中存在的所有的LVM逻辑卷。使用lvscan指令可以发现系统中的所有…

    入门教程 2023年 12月 19日
  • HTML 属性

    属性是 HTML 元素提供的附加信息。 文章目录HTML 属性属性实例实例HTML 属性常用引用属性值HTML 提示:使用小写属性HTML 属性参考手册 HTML 属性 HTML …

    2023年 4月 11日
  • base64

    文章目录base64描述语法参数实例 base64 base64 编码/解码文件或标准输入输出 描述 base64将文件或标准输入编码或解码为标准输出; 语法 base64 [OP…

    入门教程 2023年 12月 6日
  • vgrename

    文章目录vgrename补充说明语法选项例子 vgrename 使用vgrename命令可以重命名卷组的名称 补充说明 grename命令 可以重命名卷组的名称。 语法 vgren…

    入门教程 2024年 3月 11日
  • HTML 链接

    HTML 使用超级链接与网络上的另一个文档相连。几乎可以在所有的网页中找到链接。点击链接可以从一张页面跳转到另一张页面。 文章目录HTML 超链接(链接)HTML 链接语法实例HT…

    2023年 4月 12日
  • zfore

    文章目录zfore补充说明语法参数 zfore 强制为gzip格式的压缩文件添加.gz后缀 补充说明 zfore命令 强制为gzip格式的压缩文件添加“.gz”后缀。 语法 zfo…

    入门教程 2024年 3月 11日
  • lvresize

    文章目录lvresize补充说明语法选项参数实例 lvresize 调整逻辑卷空间大小 补充说明 lvresize命令 用于调整LVM逻辑卷的空间大小,可以增大空间和缩小空间。使用…

    入门教程 2023年 12月 19日
  • iOS地图开发

    文章目录IOS地图开发简介实例步骤输出 IOS地图开发 简介 IOS地图帮助我们定位位置,IOS地图使用 MapKit 框架。 实例步骤 1.创建一个简单的 View based …

    2023年 4月 1日
  • Series(列数据)

    Pandas Series 类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。 Series 由索引(index)和列组成,函数如下: pandas.Ser…

    2023年 5月 16日

发表回复

登录后才能评论
Translate »