Bash Printf - 如何在 Bash 中打印变量
在使用 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 脚本和其他命令行任务的有用工具。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

