Bash printf功能:Linux的7个示例

如果您已经使用了Bash shell相当长的时间,那么您可能知道如何使用echo命令在Linux终端中打印字符串。但是,printf命令使打印具有特定格式的文本变得更加容易。

今天,我们将学习如何使用printf函数来增强我们的Bash脚本编写技能。

什么是Bash printf函数?

顾名思义,printf是用于打印格式化的字符串的函数。这意味着您可以编写一个字符串结构(格式),然后用值(参数)填充它。

如果您熟悉C / C ++编程语言,则可能已经知道printf的工作方式。 Bash shell中的Printf非常相似,但是确实有一些小差异。

了解更多: C ++编程入门的最佳站点

如何在Bash Shell中使用printf

printf的基本语法为:

 printf format [argument]

当通过使用指定的参数实现转义 )和指令 )时,Printf将打印格式字符串。注意以下命令的输出:

 $ printf "Hello, %s" world
Hello, world

Printf接受了world参数,并用它替换了指定字符串中的%s字符。

您可能会注意到,在输出之后,Bash不会为您创建新行。与echo命令不同,printf在输出输出后不会假定您要换行。因此,您将需要在每个实例中使用换行符 n

要打印字符串然后移至新行,请键入printf“ Hello,world n”

 Hello, world

重要的是要记住,printf将尝试为所有参数重用该格式。您可以利用它来发挥自己的优势,但是如果不小心,可能会得到如下结果:

 $ printf "My name is %s " Jordan Gloor
My name is Jordan My name is Gloor

您还应该知道,如果缺少参数,printf会将任何指令解释为0 (对于数字)和null (对于字符串)。

 $ printf "Hello, %s."
Hello, .

既然您知道Linux中使用printf的Bash脚本如何工作,就可以开始在命令中使用它了。

Linux Bash printf示例

Printf具有许多可在脚本中使用的格式说明符。但是今天,我们将仅介绍该功能的一些常见功能。

1.用字符串格式化输出

要使用文本字符串格式化输出,请使用%s指令。

 $ printf "%s is one of the largest online %s." MUO "technology publications"
MUO is one of the largest online technology publications.

2.用小数格式化输出字符串

要使用整数格式化字符串,可以将%d指令用于带符号的十进制。

 $ printf "MUO was founded in %d." 2007
MUO was founded in 2007.

请注意,如果要在输出中使用无符号十进制,则必须改为使用%u指令。

相关: Linux中的“ Bash”是什么意思?

3.使用printf输出数学函数

使用printf命令格式化数学函数很容易。只需像平常在Bash中一样将表达式放在双括号内,然后在参数列表中指定表达式即可。

 $ printf "1 + 1 is %d" $((1+1))
1 + 1 is 2

4.格式化十六进制数字

如果需要格式化十六进制数字,请使用%x表示小写,使用%X表示大写。

 $ printf %X 1000
3E8C

要打印当前日期和时间,可以将printf与date命令结合使用,并传递以下指令。

 $ printf "%(%m-%d-%Y %H:%M:%S)T" $(date +%s)
03-26-2021 15:27:57

您可以在上述输出中看到月,日,年,时,分和秒的格式说明符。

6.使用Unicode字符格式化字符串

要使用printf打印Unicode字符,对于16位Unicode使用 u转义,对于32位Unicode使用 U。

例如,您可以使用以下命令打印版权符号:

 $ printf "u00A9"
©

7.在输出中增加间距

您可以通过在指令说明符之前定义最少数量的打印字符来以一定间隔设置字符串格式。未使用的字符将用空格填充。

例如,键入printf“%s:%5d n”“值1” 25“值2” 120将输出:

 Value 1: 25
Value 2: 120

输出中的%5d格式说明符表示格式化的字符串将至少包含五个字符。由于25只有两位数字,因此空格将添加到其余字符。

如果传递负数作为宽度,则伪指令将左对齐而不是右对齐。

 $ printf "%-10s: %d " "Circles" 25 "Boxes" 120
Circles : 25 Boxes : 120

如果要使width可变,则可以传递星号而不是数字,而printf将使用在参数列表中找到的下一个数字。

 $ printf "%*s: %d " -10 "Circles" 25 -10 "Boxes" 120
Circles : 25 Boxes : 120

相关:您需要了解的有关Linux中Bash for Loops的所有信息

学习Linux printf命令

使用Bash脚本编写工具区中的printf命令,您就可以开始在终端中打印复杂的字符串。在开发Bash脚本时,重要的是要确保您正在尽可能高效的环境中工作。这不仅会提高您的命令行技能,而且会总体上改善您的工作流程。