Bash Printf - 如何在 Bash 中打印变量

linuxbashopen source更新于 2026/2/4 6:07:17

在使用 Shell 脚本时,在 Bash 中打印变量是一项常见任务。Bash printf 命令是一个功能强大的工具,它允许您以精度和格式选项打印变量。在本文中,我们将探讨如何使用 Bash printf 以各种方式打印变量。

什么是 Bash Printf?

Bash printf 是一个命令行实用程序,用于在终端上格式化和打印文本。它是 Bash 的内置命令,这意味着它可以在每个 Bash Shell 会话中使用,无需任何外部依赖项。

printf 命令与 echo 命令类似,但它对输出格式提供了更好的控制。使用 printf,您可以指定输出的宽度、精度和对齐方式。这使得 printf 成为以特定格式打印变量的有用工具。

打印变量

在 Bash 中打印变量是一项简单的任务。您可以使用 echo 命令在终端上打印变量的值。例如,如果您有一个名为"name"的变量,其值是"John",则可以使用以下命令打印该变量的值 -

示例

name="John"
echo $name

输出

John

但是,如果您想更好地控制输出格式,可以使用 printf 命令。

使用 Printf 打印变量

使用 printf 打印变量的语法为 -

printf 格式字符串变量

"格式字符串"是指定输出格式的字符串。"变量"是要打印的变量的名称。让我们看一些例子。

示例 1:不带任何格式地打印变量

在本例中,我们将使用 printf 不带任何格式地打印变量的值。我们将使用与上一个示例相同的变量"名称"。

name="John"
printf "%s
" $name

输出

John

在本例中,我们使用"%s
"作为格式字符串。"%s"是一个占位符,会被变量值替换;"
"是一个换行符,会在输出后添加换行符。

示例 2:使用格式化选项打印变量

在本例中,我们将使用 printf 函数打印变量的值,并使用格式化选项。我们将使用包含浮点值的变量"price"。

price=9.99
printf "The price is $%.2f
" $price

输出

The price is $9.99

在本例中,我们使用"$%.2f
"作为格式字符串。 "$" 是一个特殊字符,表示输出应格式化为货币。"%.2f" 指定浮点值应四舍五入到小数点后两位。"
" 在输出后添加换行符。

示例 3:使用格式化选项打印多个变量

在本例中,我们将使用 printf 函数使用格式化选项打印多个变量。我们将使用变量"name"和"age"打印一个句子。

name="John"
age=30
printf "我的名字是 %s,我今年 %d 岁。
" $name $age

输出

我的名字是 John,我今年 30 岁。

在此示例中,我们分别使用"%s"和"%d"作为"name"和"age"变量的占位符。"%s"是字符串的占位符,"%d"是整数的占位符。"
"在输出后添加换行符。

其他示例

让我们看一些使用 Bash printf 打印变量的其他示例 -

示例 4:打印带前导零的变量

在某些情况下,您可能需要打印带前导零的数字。例如,如果您想以特定格式打印当前日期和时间。您可以使用格式字符串"%02d"来打印带前导零的整数。数字"2"指定输出宽度,"0"指定应添加前导零。

day=1
month=1
year=2023
printf "Today's date is %02d/%02d/%04d
" $day $month $year

输出

Today's date is 01/01/2023

示例 5:将变量打印为二进制或十六进制

您可以使用格式字符串"%b"将整数打印为二进制,或使用格式字符串"%x"将其打印为十六进制。

number=10
printf "二进制:%b
" $number printf "十六进制:%x
" $number

输出

二进制:10
十六进制:a

示例 6:将变量打印为百分比

您可以使用格式字符串"%.2f%%"将浮点值打印为带有两位小数的百分比。

discount=0.25
printf "折扣:%.2f%%
" $(echo "$discount * 100" | bc -l)

输出

折扣:25.00%

在此示例中,我们使用 bc 命令通过将折扣值乘以 100 来计算百分比。

Printf 的格式化选项

除了我们已经看到的示例之外,printf 还提供了许多其他格式化选项。让我们来看看一些最常用的选项。

宽度和对齐

您可以使用语法"%[width]s"或"%[width]d"指定输出宽度。例如,如果您要打印宽度为 10 个字符的字符串,可以使用格式字符串"%10s"。如果字符串长度少于 10 个字符,则会在左侧添加空格以弥补宽度。

您还可以使用"-"字符指定输出的对齐方式。例如,如果您要打印宽度为 10 个字符的字符串并使其左对齐,可以使用格式字符串"%-10s"。

精度

您可以使用语法"%.x"指定浮点值的精度,其中"x"是要四舍五入的小数位数。例如,如果您要将浮点值四舍五入到两位小数,可以使用格式字符串"%.2f"。

填充

您可以使用语法"%0[x]d"或"%0[x]s"为输出添加填充。例如,如果要打印一个宽度为 5 个字符并用零填充的整数,可以使用格式字符串"%05d"。零的数量对应于输出的宽度。

常见错误避免

使用 Bash printf 时,初学者经常会犯一些常见错误。以下是一些需要注意的事项,以避免这些错误 -

忘记格式字符串

最常见的错误是忘记指定格式字符串。如果不包含格式字符串,printf 将无法知道如何格式化输出。例如,以下命令将产生错误 -

示例

name="John"
printf $name

输出

John

要修复此问题,您需要包含格式字符串 -

示例

name="John"
printf $name

输出

John

使用错误的格式说明符

另一个常见错误是使用错误的变量类型格式说明符。如果使用错误的说明符,输出可能会不正确或产生错误。例如,如果您使用"%d"打印字符串变量,则输出将与预期不符。

未转义特殊字符

如果您需要在输出中包含特殊字符,例如制表符或换行符,则需要对其进行转义。否则,它们可能会被 Shell 解释为命令或其他特殊字符。例如,以下命令将不会产生所需的输出 -

示例

printf "Name:\tJohn
"

输出

Name:	John

要解决这个问题,您需要转义制表符和换行符 -

示例

printf "Name:\tJohn
"

输出

Name: John

总结

在本文中,我们探讨了如何使用 Bash printf 以各种方式打印变量。我们了解了如何在不进行任何格式化的情况下打印变量、使用格式化选项打印变量以及使用格式化选项打印多个变量。我们还了解了一些 printf 最常用的格式化选项,例如宽度和对齐方式、精度和填充。

通过使用 Bash printf,您可以根据需要以特定格式打印变量。这使得 printf 成为 Shell 脚本和其他命令行任务的有用工具。


相关文章


有用资源