2.5.4 华丽的 printf 输出

    如同echo命令,printf命令可以输出简单的字符串:
        [many@avention my_sh]$ printf "Hello, world\n"
        Hello, world
 
    printf没有像echo提供一个换行符号。必须显式的将换行符号指定成\n。
 
    printf命令的完整语法分为两部分:   
        printf   format-string   [ arguments ... ]     
 
    第一部分是一个字符串,用来描述的排列方式,最好为此字符串加上引号。此字符串包含了按字面现实的字符(characters to be printed literally)以及各式声明(formatspecifications),后者是特殊的占位符(placeholders),用来描述如何显示相应的参数(argument)。格式声明分成两部分:百分比符号(%)和指示符(specifier)。最常用的格式指示符(format specifier)有两个,%s用于字符串,而%d用于十进制整数。
 
    第二部分是与格式声明相对应的参数列表(argument list),例如一系列的字符串或变量值。(如果参数的个数比格式声明还多,则printf会循环且依次地使用格式字符串里的格式声明,直到处理完参数)。
 
    格式字符串中,一般字符会按字面显示。转移序列则像echo那样,解释后再输出成相应的字符。格式声明以%符号开头,并以定义的字母集中的一个来结束,用来控制相应参数的输出。
 
        [many@avention my_sh]$ printf "The first program always prints '%s, %d'\n" Hello 100
        The first program always prints 'Hello, 100'
 
    格式化输出  printf "%-10s  %-8s  %-4.2f \n"  杨过  男  48.5643
    %s %c %d %f 都是格式替代符
    %-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
    %-4.2f 指格式化为小数,其中.2指保留2位小数
 
[many@avention my_sh]$ printf "%-10s  %-8s  %-4.2f \n"  杨过  男  48.5643
杨过      男       48.56
 
[many@avention my_sh]$ printf "%-s  %-s  %-4.2f \n"  杨过  男  48.5643
杨过  男  48.56
        
    
 
 
posted @ 2018-09-19 22:32  Avention  阅读(143)  评论(0编辑  收藏  举报