printf FORMAT [ARGUMENT]...
printf OPTION
功能
格式化并打印数据.
举例
打印整数和字符串
$printf 'the integer is:%d\nthe string is: %s\n' 3 "test"
输入之后,输出如下:
the integer is:3
the string is: test
这里,使用单引号双引号都行;注意最后要有回车,否则下一个提示行和输出跑到一行了。
不用引号打印一个参数的情况
$printf %s test
输入之后,输出如下:
testquietheart@ubuntu$
从这里可以看出来, test
是待打印的字符, quietheart@ubuntu$
是我的机器命令提示符号,两者在一行。
不用引号打印多个参数的情况
$printf %s first second
输入之后,输出如下:
firstsecondquietheart@ubuntu$
格式只指定了一个,但是多余一个参数
$printf "%s\n" first second
输入之后,输出如下:
first
second
注意这里的回车,字符串仍旧可以输出。
指定的格式少于参数
$printf "%s %s %s %s\n" a b c d e f g h i j k l m n
输入之后,输出如下:
a b c d
e f g h
i j k l
m n
这里,该情况是前面指定一个格式的情况扩展。
类似 echo -n
的输出,不自动换行
$my_var="abc123"
$printf $my_var
输入之后输出如下:
abc123quietheart@ubuntu$
如果 echo
输出会自动换行,这里没有自动换行,这和 echo -n
的效果相同。
类似echo的输出,自动换行
$printf "$my_var \n"
输入之后,输出如下:
abc123
或者
$printf '$my_var \n'
输入之后,输出如下:
$my_var
这里,这两个命令类似于 echo
,需要注意的是不能如下这样:
$printf "%s \n" $var
因为,变量不可以如此输出,因为 printf
命令的 ARGUMENT
认字符串。
如果参数没写上,那么就用 NULL
或者 0
来代替
$printf "%s and %d \n"
输入之后,输出如下:
and 0
描述
这个函数类似C语言里的 printf
,先指定格式,再写上变量。不同点,SHELL命令的 printf
- 没有C语言函数里必须的括号;
- 一般情况下,指定
FORMAT
时候,使用单引号和双引号均可; - 某些情况下,不加引号也可以,但是无法处理负责格式;
- 某些情况下,
FORMAT
可以重用,可以将所有参数都转换; - 输出变量参数之间使用空格或
tab
分割,不用逗号; - 某种程度上可以替代
echo
.