shell script 之三:打印输出 echo printf

echo命令

1.显示普通字符串:

echo "It is a test"
It is a test

 

2:显示换行 \n

需要 -e 参数开启转义,后面输出显示颜色也需要-e参数才会正常显示

echo -e "换行 \n"    # -e 开启转义
echo "It it a test"
----------------------
换行

It it a test

 

3.显示不换行 \c

echo -e "换行 \n"  "\c"    # -e 开启转义
echo "It it a test"
----------------------
换行
It it a test

   

4.显示颜色 -e

格式:echo -e  "\033[字背景颜色;文字颜色m    字符串    \033[0m"

其中033可以用e代替  "\e[字背景颜色;文字颜色m    字符串    \e[0m"

 

 

 

printf命令

printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。

printf 输出不会自动添加换行符,需要手工添加 \n 换行。

格式:printf  <格式参数>  <输出内容>

#!/bin/sh
#test for printf
#2015 by sunny
printf "%-10s   %-5s  %-10s \n" 姓名 性别 成绩                       #  %s 制定了后面对应参数的宽度,-标识左对齐,默认右对齐。
printf "%-10s  %-5s   %-10s \n" hel 男 80.2556                      #   %f 指格式化为小数,其中.2指保留2位小数,10为字符宽度,自动四舍五入。
printf "%-10s  %-5s  %-10.3f \n" lily girl 90.12345                       
printf "%-10s  %-5s  %-10.2f  \n" grace girl 88.54321             

[root@test65 script]# sh sh3.sh 
姓名       性别   成绩 
hel       男    80.2556 
lily       girl   90.123 
grace       girl  88.54

  

例一:

printf "%.5d\n"   123

00123     

例二:

printf "%.10s\n" "this is a test\!"

this is a    # !号需要转义,另外空格也算一位

例三: 

printf "%.2f\n" 123456
123456.00

 

printf的转义序列

序列说明
\a 警告字符,通常为ASCII的BEL字符
\b 后退
\c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f 换页(formfeed)
\n 换行
\r 回车(Carriage return)
\t 水平制表符
\v 垂直制表符
\\ 一个字面上的反斜杠字符
\ddd 表示1到3位数八进制值的字符。仅在格式字符串中有效
\0ddd 表示1到3位的八进制值字符

 

printf格式指示符

                  printf格式指示符

%c

ASCII字符.显示相对应参数的第一个字符

%d,%i

十进制整数

%e

浮点格式([-d].precisione [+-dd])

%E

浮点格式([-d].precisionE [+-dd])

%g

%e或%f转换,看哪一个较短,则删除结尾的零

%G

%E或%f转换,看哪一个较短,则删除结尾的零

%s

字符串

%u

不带正负号的十进制值

%x

不带正负号的十六进制.使用a至f表示10至15

%%

字面意义的%

%X

不带正负号的十六进制.使用A至F表示10至15

posted @ 2018-03-20 14:39  sunny18  阅读(656)  评论(0编辑  收藏  举报