在linux终端中 printf 可用于终端打印,该命令使用的参数和c语言中的printf函数一样
用来格式化输出
基本格式
printf [format] [arguments]
常用替换符
%s 字符串
%f 浮点格式
%c ASCII字符,即显示对应参数的第一个字符
%d %i 十进制整数
%o 八进制值
%u 不带正负号的十进制值
%x 十六进制值(a-f)
%X 十六进制值(A-F)
%% 表示%本身
举例
例如下面脚本
#!/bin/bash
#文件名:printf.sh
printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
printf "%-5s %-10s %-4.2f\n" 2 James 90.9989
printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564
执行该脚本生成结果如下图所示
%-5s指明了一个格式为左对齐且宽度为5的字符串替换( - 表示左对齐)。如果不指明 - ,字符串就采用右对齐形式。宽度指定了保留给某个字符串的字符数量。对Name而言,其保留宽度是10。因此,任何Name字段的内容都会被显示在10字符宽的保留区域内,如果内容不足10个字符,余下的则以空格填充。
对于浮点数,可以使用其他参数对小数部分进行舍入(round off)。
对于Mark字段,我们将其格式化为%-4.2f,其中.2指定保留两位小数。注意,在每行的格
式字符串后都有一个换行符(\n)。4是指最小宽度为4个字符宽(包括小数点在内)。
选自图书《LinuxShell脚本攻略.第3版》