输出指令(echo指令和printf命令)Shell echo命令
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是⽤于字符串的输出。命令格式:
echo string
您可以使⽤echo实现更复杂的输出格式控制。
1.显⽰普通字符串:
echo "It is a test"
这⾥的双引号完全可以省略,以下命令与上⾯实例效果⼀致:
echo It is a test
2.显⽰转义字符
echo "\"It is a test\""
结果将是:
"It is a test"
同样,双引号也可以省略
3.显⽰变量
read 命令从标准输⼊中读取⼀⾏,并把输⼊⾏的每个字段的值指定给 shell 变量
#!/bin/sh
read name
echo "$name It is a test"
以上代码保存为 test.sh,name 接收标准输⼊的变量,结果将是:
[root@www ~]# sh test.sh
OK #标准输⼊
OK It is a test #输出
4.显⽰换⾏
echo -e "OK!\n" # -e 开启转义
echo "It it a test"
输出结果:
OK!
It it a test
5.显⽰不换⾏
#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换⾏
echo "It is a test"
输出结果:
OK! It is a test
6.显⽰结果定向⾄⽂件
echo "It is a test" > myfile
7.原样输出字符串,不进⾏转义或取变量(⽤单引号)
echo '$name\"'
输出结果:
$name\"
8.显⽰命令执⾏结果
echo `date`
注意:这⾥使⽤的是反引号`,⽽不是单引号'。
结果将显⽰当前⽇期
Sat Dec 9 14:41:48 CST 2017
Shell printf 命令
上⼀章节我们学习了 Shell 的 echo 命令,本章节我们来学习 Shell 的另⼀个输出命令 printf。
printf 命令模仿 C 程序库(library)⾥的 printf() 程序。
标准所定义,因此使⽤printf的脚本⽐使⽤echo移植性好。
printf 使⽤引⽤⽂本或空格分隔的参数,外⾯可以在printf中使⽤格式化字符串,还可以制定字符串的宽度、左右对齐⽅式等。默认printf不会像 echo ⾃动添加换⾏符,我们可以⼿动添加 \n。
printf 命令的语法:
printf format-string []
参数说明:
format-string: 为格式控制字符串
arguments: 为参数列表。
$ echo "Hello, Shell"
Hello, Shell
$ printf "Hello, Shell\n"
Hello, Shell
$
接下来,我来⽤⼀个脚本来体现printf的强⼤功能:
#!/bin/bash
# author:W3Cschool教程
# url:www.w3cschool
printf "%-10s %-8s %-4s\n" 姓名性别体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖男 66.1234printf "%-10s %-8s %-4.2f\n" 杨过男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙⼥ 47.9876
执⾏脚本,输出结果如下所⽰:
姓名性别体重kg
郭靖男 66.12
杨过男 48.65
郭芙⼥ 47.99
%s %c %d %f都是格式替代符
%-10s 指⼀个宽度为10个字符(-表⽰左对齐,没有则表⽰右对齐),任何字符都会被显⽰在10个字符宽的字符内,如果不⾜则⾃动以空格填充,超过也会将内容全部显⽰出来。
%-4.2f 指格式化为⼩数,其中.2指保留2位⼩数。
更多实例:
#!/bin/bash
# author:W3Cschool教程
# url:www.w3cschool
# format-string为双引号
printf "%d %s\n" 1 "abc"
# 单引号与双引号效果⼀样
printf '%d %s\n' 1 "abc"
# 没有引号也可以输出
printf %s abcdef
# 格式只指定了⼀个参数,但多出的参数仍然会按照该格式输出,format-string 被重⽤
printf %s abc def
printf "%s\n" abc def
printf "%s %s %s\n" a b c d e f g h i j
# 如果没有 arguments,那么 %s ⽤NULL代替,%d ⽤ 0 代替
printf "%s and %d \n"
执⾏脚本,输出结果如下所⽰:
1 abc
1 abc
abcdefabcdefabc
def
a b c
d e f
g h i
j
and 0
printf的转义序列
序列说明
\a警告字符,通常为ASCII的BEL字符
\b后退
\c抑制(不显⽰)输出结果中任何结尾的换⾏字符(只在%b格式指⽰符控制下的参数字符串中有效),⽽且,任何留在参数⾥的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略
\f换页(formfeed)
\n换⾏
\r回车(Carriage return)
printf输出格式右对齐\t⽔平制表符
\v垂直制表符
\\⼀个字⾯上的反斜杠字符
\ddd表⽰1到3位数⼋进制值的字符。仅在格式字符串中有效
\0ddd表⽰1到3位的⼋进制值字符
$ printf "a string, no processing:<%s>\n" "A\nB"
a string, no processing:<A\nB>
$ printf "a string, no processing:<%b>\n" "A\nB"
a string, no processing:<A
B>
$ printf "www.w3cschool \a"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论