| 导读 | 在编写shell脚本时,我们使用echo打印到标准输出。echo是一个简单的命令,但其功能有限,想要更好的控制输出格式,可以使用printf命令。 |
printf的语法格式:
# printf 格式 参数
下面是一个例子:
[root@localhost ~]# printf "姓名:%s/n身高:%dcm/n体重:%dkg/n" "小明" "180" "75" 姓名:小明 身高:180cm 体重:75kg

"姓名:%s/n身高:%dcm/n体重:%dkg/n"是格式,"小明" "180" "75"是参数。格式包含了%s , %d都是格式转换符,%d对应的参数必须是十进制数。%s对应的参数必须是字符串。还包括了三个/n换行符,printf命令默认不会添加还行符号,需要手动添加。
常用的转义字符
/"– 转义后的双引号//– 转义后的反斜杠/b– 退格符/n– 换行符/r– 回车符/t– 水平制表符/v– 垂直制表符%%– 单个%符号
常用的类型转换符
类型转换说明符是一个字符,用于指定如何解释相应的参数,该字符是必需添加的,以下是显示所有类型转换及其作用的列表:
%d– 将参数打印为十进制整数%f– 将参数打印为浮点数%s– 将参数打印为字符串%x– 将参数打印为十六进制整数%o– 将参数打印为八进制整数
实例
实例一
该例子使用%d,%x,%o将后面提供的参数转化为十进制、十六进制、八进制。
[root@localhost ~]# printf "Decimal: %d/nHex: %x/nOctal: %o/n" 100 100 100 Decimal: 100 Hex: 64 Octal: 144
实例二
下面例子使用%.2f,其中.2指参数保留两位小数,f将参数打印为浮点数。
[root@localhost ~]# printf "%.2f/n" 3.1415926 3.14
实例三
下面例子中使用了水平制表符/t。例子中给的参数超过了格式中给出的转换符的数量,多出的参数仍会按照格式输出。
[root@localhost ~]# printf "%s /t %s /t %s/n" "姓名" "性别" "年龄" "小明" "男" "18" "小红" "女" "19" "小蓝" "男" "18" 姓名 性别 年龄 小明 男 18 小红 女 19 小蓝 男 18

实例四
实例中,%-10s , %-8d其中-表示靠左对齐,默认情况下是靠右对齐。10和8表示占用10或者8个字符宽度。/e[1,30;47m ..... /e[0m表示使用粗体字、黑色字体、白色背景,后面的/e[0,m表示重置。
[root@localhost ~]# cat p.sh #!/bin/bash printf "/e[1;30;47m%-10s %-10s/e[0m/n" "姓名" "年龄" printf "/e[36;47m%-10s %-8d/e[0m/n" "小明" "18" printf "/e[31;47m%-10s %-8d/e[0m/n" "小红" "19" printf "/e[34;47m%-10s %-8d/e[0m/n" "小蓝" "19"

总结
在编写shell脚本时,我们使用echo打印到标准输出。echo是一个简单的命令,但其功能有限,想要更好的控制输出格式,可以使用printf命令。
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/123796.html