在 Linux Shell 脚本编写中,经常需要对字符串进行格式化处理,比如让输出对齐、补全固定长度、或者美化日志信息。其中,“字符串填充”是一个非常实用但容易被初学者忽略的技巧。本文将手把手教你如何在 Bash 中实现字符串的左填充、右填充和居中填充,即使你是 Shell 新手也能轻松掌握!

字符串填充(String Padding)是指在原始字符串的左侧、右侧或两侧添加指定字符(通常是空格或零),使其达到预设的总长度。例如:
"42" 填充为 "0042"(总长4位,用0填充)"Hello" 填充为 "Hello "(总长8位,用空格填充)这种操作在生成报表、日志对齐、文件名编号等场景中非常常见。
Bash 内置的 printf 命令是处理字符串格式化的强大工具,支持类似 C 语言的格式说明符。
使用 %Ns 格式,其中 N 是总宽度。默认用空格左填充:
$ printf "%10s\n" "Apple" Apple如果想用其他字符(如 0)填充数字,可以这样写:
$ printf "%05d\n" 4200042使用 %-Ns(注意负号),表示左对齐,右侧用空格填充:
$ printf "%-10s|\n" "Banana"Banana |你可以将 printf 的结果赋值给变量:
name="Tom"padded_name=$(printf "%-15s" "$name")echo "Name: [$padded_name]"输出:
Name: [Tom ]Bash 4 引入了更灵活的参数扩展语法,可用于简单填充。
# 创建一个由10个空格组成的字符串padding=" "str="Hi"# 取后10位(即左填充)echo "${padding:${#str}}$str"但这不如 printf 直观,因此推荐优先使用 printf。
假设你要打印一个服务状态表:
#!/bin/bashprintf "%-15s %-10s %s\n" "SERVICE" "STATUS" "PORT"printf "%-15s %-10s %s\n" "nginx" "running" "80"printf "%-15s %-10s %s\n" "mysql" "stopped" "3306"printf "%-15s %-10s %s\n" "redis" "running" "6379"输出效果整齐美观:
SERVICE STATUS PORTnginx running 80mysql stopped 3306redis running 6379#!/bin/bash 开头,因为某些填充功能在 /bin/sh 中不可用。printf 动态控制宽度。%0Nd 格式,简洁高效。通过本文,你已经掌握了在 Linux Shell 中进行字符串填充的核心方法。无论是使用 printf 还是参数扩展,都能轻松实现左填充、右填充甚至自定义字符填充。这些技巧不仅能提升脚本的专业性,还能让你的输出更加清晰易读。
记住关键词:Linux Shell字符串填充、Shell字符串操作、bash字符串格式化 和 字符串对齐技巧——它们是你日后搜索相关问题的好帮手!
现在,打开你的终端,动手试试吧!
本文由主机测评网于2025-11-27发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/202511901.html