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"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章