shell script 之三:打印输出 echo printf

echo命令

1.显示普通字符串:

echo "It is a test"
It is a test

 

2:显示换行

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

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

It it a test

3.显示不换行 c

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

   

4.显示颜色 -e

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

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

 

printf命令

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

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

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

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

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

  

例一:

printf "%.5d
"   123

00123     

例二:

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

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

例三: 

printf "%.2f
" 123456
123456.00

 

printf的转义序列

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

原文地址:https://www.cnblogs.com/sunny18/p/8608918.html