第一篇:人人都能學(xué)會(huì)的企業(yè)SHELL編程v2
人人都能學(xué)會(huì)的SHELL編程
目 錄
1.Shell入門簡(jiǎn)介.......................................................................................................2 2.Shell編程之變量詳解...........................................................................................5 3.If條件語(yǔ)句學(xué)習(xí).....................................................................................................8 4.使用if條件語(yǔ)句編寫MySQL備份腳本..............................................................10 5.IF條件綜合Shell實(shí)戰(zhàn)腳本編寫.......................................................................11 6.循環(huán)語(yǔ)句for.........................................................................................................20 7.循環(huán)語(yǔ)句while.....................................................................................................22 8.Until循環(huán)語(yǔ)句.....................................................................................................23 9.Case選擇語(yǔ)句.......................................................................................................23 10.select選擇語(yǔ)句.................................................................................................25 11.Shell編程函數(shù)講解...........................................................................................25 12.Shell數(shù)組編程...................................................................................................27 13.Shell編程之a(chǎn)wk、sed命令案例分析.............................................................30 14.全備和增量備份Linux系統(tǒng)腳本......................................................................31 15.Shell編程之系統(tǒng)硬件信息數(shù)據(jù)庫(kù)收集...........................................................34 16.Shell編程之磁盤報(bào)警高級(jí)腳本.......................................................................37 17.Shell編程之服務(wù)監(jiān)控檢查腳本.......................................................................40 18.Shell編程之實(shí)戰(zhàn)WEB界面展示一...................................................................40 19.Shell編程之實(shí)戰(zhàn)WEB界面展示二...................................................................40 20.Shell編程之學(xué)習(xí)心得分享及拓展...................................................................40
1.Shell入門簡(jiǎn)介
說(shuō)到Shell編程,我想很多從事Linux運(yùn)維工作的朋友都不陌生,都對(duì)Shell有基本的了解,可能大家剛開始接觸Shell的時(shí)候,有各種想法? 能不能不學(xué)? 高大上?
到底是浮云?還是神馬?
很難???
我想告訴大家的是,大家有這些想法一點(diǎn)都不覺(jué)得驚訝,為什么?這些都很正常,對(duì)于任何一件事情在未開始之前,肯定會(huì)有總總假設(shè),那我今天想說(shuō)的是,學(xué)完人人都會(huì)Shell編程后,我們會(huì)覺(jué)得一切的Shell都是浮云,我們每個(gè)人都能很好的使用它,駕馭它,更好的完成我們?nèi)粘_\(yùn)維的工作。
曾經(jīng)有人說(shuō)過(guò),玩Linux不知道Shell,那就是不懂Linux;現(xiàn)在細(xì)細(xì)品味確實(shí)是這樣。為了讓更多的人能接觸Shell、了解Shell,使用Shell,所以今天開設(shè)了這樣一個(gè)網(wǎng)絡(luò)課程,讓我們的Shell飛起來(lái)。
好的,其他不多說(shuō)了,我們正式進(jìn)入主題,什么是Shell呢? Shell是操作系統(tǒng)的最外層,Shell可以合并編程語(yǔ)言以控制進(jìn)程和文件,以及啟動(dòng)和控制其它程序。shell 通過(guò)提示您輸入,向操作系統(tǒng)解釋該輸入,然后處理來(lái)自操作系統(tǒng)的任何結(jié)果輸出來(lái)管理您與操作系統(tǒng)之間的交互。簡(jiǎn)單來(lái)說(shuō)Shell就是一個(gè)用戶跟操作系統(tǒng)之間的一個(gè)命令解釋器。
Shell是用戶與Linux操作系統(tǒng)之間溝通的橋梁。用戶可以輸入命令執(zhí)行,又可以利用 Shell腳本編程去運(yùn)行。
Linux Shell種類非常多,常見(jiàn)的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)等。不同的Shell語(yǔ)言的語(yǔ)法有所不同,所以不能交換使用。
最常用的shell是Bash,也就是Bourne Again Shell,由于易用和免費(fèi),Bash在日常工作中被廣泛使用,也是大多數(shù)Linux系統(tǒng)默認(rèn)的Shell。接下來(lái)我們來(lái)寫一個(gè)簡(jiǎn)單的shell腳本。(shell腳本一般文件名以.sh結(jié)尾,同時(shí)文件第一行定義該腳本為shell腳本)vi first_shell.sh #!/bin/bash #This is my First shell echo “Hello World!”
這就是我們的第一個(gè)腳本,是不是很簡(jiǎn)單呢,注解如下:
#!/bin/bash //表示定義該腳本是一個(gè)shell腳本(固定格式)。#This is my First shell //這里的#號(hào)屬于注解,沒(méi)有任何的意義,SHELL不會(huì)解析它。
echo “Hello World!” //shell腳本主命令,我們執(zhí)行這個(gè)腳本講看到: Hello World!信息。
腳本編寫完畢,如何來(lái)執(zhí)行呢,首先執(zhí)行shell腳本需要執(zhí)行權(quán)限,賦予執(zhí)行權(quán)限:
chmod o+x first_shell.sh 然后./first_shell.sh執(zhí)行即可;也可以直接使用命令執(zhí)行: /bin/sh first_shell.sh,顯示效果一樣。2.Shell編程之變量詳解
Shell編程語(yǔ)言是非類型的解釋型語(yǔ)言,不像C++/JAVA語(yǔ)言編程時(shí)需要事先聲明變量,SHELL給一個(gè)變量賦值,實(shí)際上就是定義了變量,在Linux支持的所有shell中,都可以用賦值符號(hào)(=)為變量賦值。SHELL變量可分為兩類:局部變量和環(huán)境變量。局部變量只在創(chuàng)建它們的shell腳本中使用。而環(huán)境變量則可以在創(chuàng)建它們的shell及其派生出來(lái)的任意子進(jìn)程中使用。有些變量是用戶創(chuàng)建的,其他的則是專用shell變量。
例如在腳本里面定義A=123 ,定義這樣一個(gè)變量,前面變量名,后面是變量的值。
引用變量可以使用$A,把變量放在腳本里面會(huì)出現(xiàn)什么樣的效果呢?如下: #!/bin/bash #Author wugk 2014-06-10 A=123 echo “Printf variables equal is $A” 執(zhí)行腳本:sh test.sh,結(jié)果將會(huì)顯示: Printf variables equal is 123 簡(jiǎn)單的理解變量,相當(dāng)于定義一個(gè)別名-名稱,引用的時(shí)候加上$符號(hào)就可以了。
例如定義變量 name=wuguangke 執(zhí)行echo $name 將會(huì)顯示wuguangke SHELL常見(jiàn)的系統(tǒng)變量解析: $0 當(dāng)前程序的名稱
$n 當(dāng)前程序的第n個(gè)參數(shù),n=1,2,?9 $* 當(dāng)前程序的所有參數(shù)(不包括程序本身)$# 當(dāng)前程序的參數(shù)個(gè)數(shù)(不包括程序本身)$? 命令或程序執(zhí)行完后的狀態(tài),一般返回0表示執(zhí)行成功。$UID 當(dāng)前用戶的ID $PWD 當(dāng)前所在的目錄
我們來(lái)測(cè)試一個(gè)常用變量的腳本:vi auto_var.sh #!/bin/bash #auto print variables #by wugk 2014-09 echo-e '