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 |