LinuxShell脚本系列教程(⼆):终端打印命令详解
终端打印
终端是交互式⼯具,⽤户可以通过它与shell环境进⾏交互。在终端中打印⽂本是⼤多数shell脚本和⼯具⽇常需要执⾏的基本任务。通过终端打印,⼈们可以知道系统的运⾏状态,这对⽤户来说是⾄关重要的。
echo终端打印
复制代码代码如下:
echo "Welcome to Bash"
echo 'Welcome to Bash'
echo  Welcome to Bash
以上三种⽅法的效果是⼀样的,输出内容都是“Welcome to Bash”,并在末尾添加换⾏符。在默认情况下,echo在每次调⽤后会添加⼀个换⾏符,⽽⽆需⼿动输⼊换⾏符。此处,建议养成⼀种习惯,对于其他的⽅法了解即可。
使⽤双引号时的限制
使⽤双引号输出字符串时,字符串内不能含有特殊字符(!),或者要在特殊字符前加转义字符\。使⽤单引号或者不使⽤引号,也可以正常输出特殊字符。
复制代码代码如下:
echo "cannot include !"  #这种情况下将会报错
echo "cannot include \!"  #这种情况下可以正常输出!
echo cannot include !    #这种情况下可以正常输出!
echo 'cannot include !'  #这种情况下可以正常输出!
使⽤单引号的限制
在使⽤单引号输出字符串时,变量替换将会失效。使⽤双引号或者不使⽤引号可以正常输出被替换的变量。
复制代码代码如下:
linux循环执行命令脚本
var="abcd"
echo '1234$var'          #这种情况下将输出 1234$var
echo 1234$var            #这种情况下将输出 1234abcd
echo "1234$var"          #这种情况下将输出 1234abcd
不使⽤引号时的限制
在不使⽤引号输出字符串的情况下,⽆法显⽰分号(;),因为分号在Bash中被⽤作命令定界符。使⽤单引号或者双引号可以输出分号。
复制代码代码如下:
echo hello;hello  #第⼀个hello被当成字符串输出,第⼆个被当成命令
printf终端打印
printf使⽤的参数和C语⾔中的printf函数⼀样,使⽤引⽤⽂本或由空格分隔的参数。在printf函数中,我们可以使⽤格式化字符串,指定字符串的宽度、左右对齐⽅式等。在默认情况下,printf不会在⾏尾添
加换⾏符,需要⼿动添加。
复制代码代码如下:
printf "Hello world"                    #使⽤引⽤字符
printf "%-5s %-10s %-4s\n" No Name Mark #指定宽度及左对齐⽅式
printf "%-5s %-10s %-4s\n" 1 Sarath 80.3456
⼯作原理
%s,%c,%d,%f都是格式替换字符,其所对应的参数可以置于带引号的格式字符串之后。
%-5s指明了⼀个格式为左对齐且宽度为5的字符串替换,-表⽰左对齐,若不指定对齐⽅式,则默认采⽤右对齐⽅式。宽度指定了保留给某个变量的字符数,如果要输出的内容宽度不⾜,则⽤空格填充,若多于指定宽度,则超出部分被丢弃。
%4.2f表⽰指定⼩数可以保留两个⼩数位,要注意的是4并不代表整数部分的位数,也不代表整数位和⼩数位的和。
注意:使⽤echo和printf的命令选项时,要保证选项出现在命令⾏内所有字符串之前,否者Bash会将选项视为另⼀个字符串。
补充内容
在echo中使⽤转义字符
在默认情况下,echo会⾃动在输出字符串末尾添加换⾏符,可以使⽤-n选项来忽略结尾的换⾏符。echo同样接受双引号字符串内的转义序列作为参数。如果需要使⽤转义序列,则采⽤echo -e “包含转义序列的字符串”这种形式,在ubuntu14.04中,不需要添加-e选项,若添加,则-e选项会被作为字符串的⼀部分输出。
复制代码代码如下:
echo "Hello World"          #将在末尾添加换⾏符
echo -n "Hello Wordl"        #末尾不会添加换⾏符
echo -e "1\t2\t3"            #将输出 -e 1  2  3
echo "1\t2\t3"              #将输出1  2  3
打印彩⾊输出
在终端中⽣成颜⾊输出,有助于我们从⼤量⽂本中快速定位特定的信息,我们可以使⽤转义序列来实现颜⾊输出。
每种⽂本颜⾊都有对应的颜⾊码。
复制代码代码如下:
echo -e "\e[1;31m This is red text \e[0m"
echo -e "\e[1;41m This is red background \e[0m"
#ubuntu14.04不⽀持这种⽅式改变⽂本或者背景颜⾊

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。