Bash printf 函数:Linux 的 7 个示例
以下是您需要了解的有关 Linux Bash 中 printf 函数的所有信息。
如果您使用 Bash shell 有相当长的时间,您可能知道如何使用 echo 命令在 Linux 终端中打印字符串。然而,printf 命令使打印具有特定格式的文本变得更加容易。
今天我们将学习如何使用 printf 函数来增强我们的 Bash 脚本编写技能。
Bash printf 函数是什么?
顾名思义,printf 是一个打印格式化文本字符串的函数。这意味着您可以编写一个字符串结构(格式),然后用值(参数)填充它。
如果您熟悉 C/C++ 编程语言,您可能已经知道 printf 的工作原理。 Bash shell 中的 Printf 非常相似,但确实有一些小的差异。
如何在 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 指令。
3. 使用 printf 输出数学函数
使用 printf 命令格式化数学函数很容易。只需将表达式放在双括号内,就像在 Bash 中通常所做的那样,然后在参数列表中指定表达式。
$ printf "1 + 1 is %d" $((1+1))
1 + 1 is 2
4. 格式化十六进制数字
如果您需要设置十六进制数字的格式,请使用 %x 表示小写字母,使用 %X 表示大写字母。
$ printf %X 1000
3E8C
5. 打印日期和时间
要打印当前日期和时间,可以将 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" "Value 1" 25 "Value 2" 120 将输出:
Value 1: 25
Value 2: 120
输出中的 %5d 格式说明符表示格式化字符串将至少包含五个字符。由于 25 只有两位数字,因此在其余字符中添加了空格。
如果传递负数作为宽度,则指令将左对齐而不是右对齐。
$ printf "%-10s: %d " "Circles" 25 "Boxes" 120
Circles : 25 Boxes : 120
如果要使宽度可变,可以传递星号而不是数字,printf 将使用它在参数列表中找到的下一个数字。
$ printf "%*s: %d " -10 "Circles" 25 -10 "Boxes" 120
Circles : 25 Boxes : 120
学习 Linux printf 命令
使用 Bash 脚本实用程序带中的 printf 命令,您就可以开始在终端中打印复杂且变化的字符串。当您开发 Bash 脚本时,确保您在尽可能高效的环境中工作非常重要。这不仅会提高您的命令行技能,而且还会增强您的总体工作流程。