1.printf介绍
linux命令printf是linux的另外一个输出命令(其中一个为echo),其是模仿C程序库里的printf()程序。
由于printf是由POSIX(Portable Operating System Interface of UNIX)标准所定义,因此使用printf的脚本比使用echo移植性好。
printf 使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认的 printf不会像echo自动添加换行符,我们可以手动添加\n。
2.printf用法
printf format-string [arguments...]
其中:
format-string:为格式控制字符串
format-string | 说明 |
%c | 输出一个字符 |
%d | 输出一个整数 |
%f | 输出float数 |
%s | 输出字符串 |
%b | 开启转义,后面输出字符串中若含有转义字符会进行转义 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\\ | 反斜杠字符 |
arguments:为参数列表
3.printf样例
3.1.printf基本输出
命令:
printf "Hello,ztj\n"
[root@kibana ~]# printf "Hello,ztj\n"
Hello,ztj
[root@kibana ~]#
3.2.printf脚本样例
#!/bin/bash
printf "%-20s %-10s %-6s\n" 姓名 性别 体重kg
printf "%-20s %-10s %-6.3f\n" 张三 男 88.8888
printf "%-20s %-10s %-6.3f\n" 李四 男 66.1234
printf "%-20s %-10s %-6.3f\n" 王五 女 49.2345
[root@kibana ~]# sh printf.sh
姓名 性别 体重kg
张三 男 88.889
李四 男 66.123
王五 女 49.235
[root@kibana ~]#
其中:
%-20s 指一个宽度为20个字符(- 表示左对齐,没有则表示右对齐),任何字符都会被显示在 20 个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。%-10s亦然。
%-6.3f 指格式化为小数,其中.3指保留3位小数。
3.3.例外测试
-->printf "%s and %d \n"
如果没有arguments,那么%s用null代替,%d用0代替
[root@kibana ~]# printf "%s and %d \n"
and 0
-->printf "test:<%s>\n" "A\nB"
%s表示整个字符串
[root@kibana ~]# printf "test:<%s>\n" "A\nB"
test:<A\nB>
[root@kibana ~]#
-->printf "test:<%b>\n" "A\nB"
%b表示开启转义,后面输出字符串中若含有转义字符会进行转义。即:A\nB中,A和B会换行显示
[root@kibana ~]# printf "test:<%b>\n" "A\nB"
test:<A
B>
[root@kibana ~]#