shell终端打印两种方法echo,printf
1、在默认情况下,echo在每次调用后会添加一个换行符。echo输出的字符串,可以带双引号,可以带单引号或者不带引号。
2、带双引号。

3、带单引号。

4、不带引号。

5、echo三种字符串输出的区别。
带双引号的字符串中,特殊字符需要转义,而其它两种输出方式不需要对特殊字符进行转义;或者在echo之前执行set +H,则特殊字符不需要转义也能正常显示。
带单引号的字符串中,若有变量则不解析。例echo '$var'将会返回$var,不会输出其值。echo $var将会根据变量$var定义与否,返回$var的值。
不带引号,以echo hello;hello为例,echo hollo 被视为一个命令,holle被视为另一个命令。
所以echo文本输出,推荐使用带双引号的。


1、printf使用引用文本或由空格分隔参数。printf可以使用格式化字符串,指定字符串的宽度、左右对齐方式等。在默认情况下,printf不会自动添加换行符,这和echo不一样。可以在需要的时候手动添加\n。
2、例如:
#!/bin/bash
printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456
printf "%-5s %-10s %-4.2f\n" 2 James 90.9989
printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564
%-5s指明了一个格式为左对齐且宽度为5的字符串替代(-表示左对齐)。如果不用-指定对齐方式,字符串则采用右对齐形式。宽度是指定保留给某个变量的字符数,若内容字符数不足保留的宽度,余下的则以空格填充。
%-4.2f指明浮点数的格式,.2指定保留2位小数。
%s、%c、%d和%f都是格式替代符。printf要换行,需要在每行格式字符串后添加一个换行符\n。

