shell脚本之echo命令基础用法(一)

echo是linux中我们经常写shell脚本经常用到的命令,总结一些常用的命令,以便在shell脚本中更流利的书写,方便记忆

格式一:
echo 输入的内容
示例:
基本用法,直接输出内容可以加'',"",或者不加,也可以是中文

[root@zhaocheng ~]# cat echo.sh 
#!/bin/bash
echo hello
echo hello xiaoming
echo 'hello xiaoming'
echo "hello xiaoming tongxue"
echo "下载文件中,请稍等"
[root@zhaocheng ~]# bash echo.sh 
hello
hello xiaoming
hello xiaoming
hello xiaoming tongxue
下载文件中,请稍等

格式二:
echo -n 输出的内容
echo -n 是表示不换行输出
示例

#!/bin/bash
echo -n hello
echo -n hello xiaoming
echo -n 'hello xiaoming'
echo -n "hello xiaoming tongxue"
echo -n "下载文件中,请稍等"
[root@zhaocheng ~]# bash echo.sh 
hellohello xiaominghello xiaominghello xiaoming tongxue下载文件中,请稍等[root@zhaocheng ~]# 

格式三
echo ls
echo "ls"
当在使用我们的脚本的时候可能会使用一些shell命令,但是直接使用echo ls,这肯定当一个文本输出,如果想输出我们的shell命令ls,得到当前目录,就需要添加``,但是这样的输出只会不按正常的列表输出,如果想按格式输出的话,需要添加“”引起来
示例

[root@zhaocheng ~]# cat echo.sh 
#!/bin/bash
echo "`ifup eth0`"
[root@zhaocheng ~]# bash echo.sh 
dhclient(920) is already running - exiting. 

This version of ISC DHCP is based on the release available
on ftp.isc.org.  Features have been added and other changes
have been made to the base software release in order to make
it work better with this distribution.

Please report for this software via the CentOS Bugs Database:
    http://bugs.centos.org/

exiting.

Determining IP information for eth0... failed.

格式四
echo "\t"
echo -e \t
可以加-e,直接输出转义字符,也可以不加-e,加“\t”,只针对命令,其他的转移字符,就需要添加-e操作了

ip route,列出路由表条目
route显示本机路由表

[root@zhaocheng ~]# cat echo.sh 
#!/bin/bash
echo "`ip route`""\t""`route`"

[root@zhaocheng ~]# cat echo.sh 
#!/bin/bash
echo -e "`ip route`"\t"`route`"

执行效果都是一样的

[root@zhaocheng ~]# bash echo.sh 
default via 172.17.0.1 dev eth0 
169.254.0.0/16 dev eth0 scope link metric 1002 
172.17.0.0/20 dev eth0 proto kernel scope link src 172.17.0.8 \tKernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 eth0
link-local      0.0.0.0         255.255.0.0     U     1002   0        0 eth0
172.17.0.0      0.0.0.0         255.255.240.0   U     0      0        0 eth0

常用的转义字符
\b 相当于退格键,类似将前面的字符去掉
\c 不换行输出,作用相当于echo -n
\n 换行,一般使用-e之后,输出的内容想换行就可以使用\n,一般写脚本的时候会用到这个,渲染输出的结果,或者添加点颜色换行
\f 代表与上一行结尾与下一行的开头换行连接
\v 与\f一样

友情提示:一般转移字符使用的都加-e,-e它是一个选项,这个选项包含了一些常用的转义字符,其他的建议都加-e,有的不支持“”
示例

格式五
echo -e \b

\b,相当于退格键,将前面的字符删除掉
可以使用单引号或者双引号都可以,注意需要加引号,不然以为是普通字符

[root@zhaocheng ~]# echo -e '123\b456'
12456
[root@zhaocheng ~]# echo -e "123\b456"
12456

不加-e,不会识别到,所以一般需要加-e操作参数
[root@zhaocheng ~]# echo "123""\b""456"
123\b456
[root@zhaocheng ~]# echo "123"\b"456"
123b456

格式六
echo -e \c
一般加\c的话,只会输出\c之前的字符,之后的不会输出

[root@zhaocheng ~]# echo -e "shouji\cpingban"
shouji[root@zhaocheng ~]# echo -e "shouji\c"
shouji[root@zhaocheng ~]# 

格式七
echo -e \n
一般加\n的话,表示换行输出,这个可以根据自己的脚本格式输出一些自己的格式来

[root@zhaocheng ~]# echo -e "shouji\npingban\ndainnao\nshoubiao"
shouji
pingban
dainnao
shoubiao

格式八
echo -e \f
代表在上一行的结尾与下一行的开头连接

[root@zhaocheng ~]# echo -e "12345\f6789\09876\f9809876\f3456789"
12345
     67899876
             9809876
                    3456789

格式九
echo -e \v
与\f是一样的,上一行的结尾与上一行的开头进行连接

[root@zhaocheng ~]# echo -e "12345\v6789\v9876\v9809876\v3456789"
12345
     6789
         9876
             9809876
                    3456789

格式九
echo -e \
一般这个代表插入\本身,这个也可以直接使用\来使用也一样的效果

[root@zhaocheng ~]# echo -e "ghjk\\dehdh"
ghjk\dehdh
[root@zhaocheng ~]# echo -e "ghjk\dehdh"
ghjk\dehdh

简单示例
使用阿里云的repo源

[root@zhaocheng ~]# cat yum.sh 
#!/bin/bash
DIR=/etc/yum.repos.d/bak

cd /etc/yum.repos.d/
[ -d $DIR ] || mkdir bak
find /etc/yum.repos.d -name "*.repo" -exec mv {} bak \; &> /dev/null
wget -O /etc/yum.repos.d/aliyun.repo https://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
echo -e "\033[49;32;5m 下载中\n[58%...]============================================================"
echo -e "\033[49;32;5m[80%...]============================================================"
yum clean all &> /dev/null
yum makecache &> /dev/null
echo "aliyun.repo Have been ready"

猜你喜欢

转载自blog.51cto.com/14143894/2472736