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 ~]# 

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐