第一章:相遇:为什么是printf,而不是echo?
如果你刚接触Shell脚本,你认识的第一个输出命令大概率是echo。它简单、直接、奔放,就像学校里那个心直口快的阳光少年。你让他喊一声“Hello World”,他绝对不加半点修饰,大声喊出来:
echo "Hello World"
但当你步入脚本开发的“社会”,你会发现,这个世界需要的不仅仅是“喊出来”,更需要“优雅地、有格调地、精确地呈现出来”。这时,你遇到了printf。
printf,这个名字就透露着一种专业范儿。“print formatted”,格式化打印。它不像echo那样天生自带换行符,它像一位严谨的钢琴师,每一个音符(字符)的落下都完全遵从你的指挥。你让它弹一个音符,它绝不会自作主张地加上休止符。
它的核心哲学是:我给你一个格式模板,你给我按照这个模板输出数据。
这种控制力,让printf成为了构建复杂、健壮、可移植脚本的不二之选。它几乎在所有环境和系统中都有一致的行为,而echo的各种衍生版本(BSD、GNU等)行为却略有不同,有时会让你掉进坑里。
所以,是时候深入了解这位深藏不露的高手了。
第二章:相知:printf的“语法武器库”
printf命令的基本语法看似复杂,实则规整:
printf FORMAT [ARGUMENT]...
- FORMAT(格式字符串): 这是printf的灵魂所在。它包含两种类型的内容:
-
- 普通字符: 原样输出的文本。
- 格式转换符(Format Specifiers): 以百分号
%开头的特殊序列,它像一个占位符,规定了后续参数如何被格式化输出。
- ARGUMENT(参数): 这是填入格式转换符“坑位”里的“萝卜”。参数的数量和顺序必须与格式字符串中的转换符一一对应。
它的工作流程是这样的: printf读取格式字符串,遇到普通字符就直接输出,遇到%开头的转换符,就去下一个参数里找一个值,按照转换符规定的格式“化妆”后,再输出。所有内容输出完毕后,它不会自动添加换行符!
Shell脚本中使用printf格式化输出技巧

最低0.47元/天 解锁文章
653

被折叠的 条评论
为什么被折叠?



