printf命令模仿C程序库里的printf()库程序.几乎复制了该函数的所有功能,如同echo命令,printf命令可以输出简单的字符串:
printf “hello world\n”
通过观察echo 和printf的输出的不同,可以发现echo会提供自动换行,printf不会提供自动换行,所以那些转移序列在printf 发挥的很好.
printf命令的完整语法分为两部分:
printf format-string [arguments....]
分析:printf是命令,不解释.format-string 为格式控制字符串,arguments 为参数列表。
printf命令不用加括号.
format-string可以没有引号,但是最好加上,单双引号均可
参数多于格式控制符(%)时,format-string可以重用,可以将所有参数都转换
arguments:使用空格分割,不用逗号.
printf “%d , %s\n” 1 abc 这里输出的是1 , abc.有没有引号都可以.
如果没有arguments %s用NULL表示,%d用0表示
例如 :printf “%s , %d\n” 输出结果为 ,0
format-string的可重用性:printf “%s” abc def==>abcdef
如果以%d来显示字符串,会有警告,提示无效的数字,此时的默认值为0.例如:printf "%d\n" abc==>bash: printf: abc: invalid number 0;
既然shell的printf和C的printf差不多,那么他们也都支持%.例如:printf “%s\n” hello 输出hello换行.因为各种版本的liunx的各种版本对echo的移植性不好,所以引入了printf,printf可以说是echo的加强版,是由POSIX标准定义.