Linux的shell編程ppt課件_第1頁(yè)
Linux的shell編程ppt課件_第2頁(yè)
Linux的shell編程ppt課件_第3頁(yè)
Linux的shell編程ppt課件_第4頁(yè)
Linux的shell編程ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩129頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第5章,Linux外殼編程,5.1什么是外殼?用戶登錄到Linux后,系統(tǒng)初始化程序init為每個(gè)用戶運(yùn)行一個(gè)名為shell的程序。外殼是命令行解釋器。一般的Linux系統(tǒng)使用bash作為默認(rèn)外殼。5.2目前流行的幾種外殼,其中有ash、bash、ksh、csh、zsh等,bash是Linux系統(tǒng)使用的默認(rèn)外殼。您可以使用以下命令檢查shell的類型:#echo $SHELL SHELL是一個(gè)記錄用戶使用的SHELL類型的環(huán)境變量。幾個(gè)流行的shell(續(xù)),您可以使用命令:#shell-name改為另一個(gè)shell $exit退出子shell。5.3 shell編程,使用shell編程類似于

2、DOS中的批處理文件,稱為shell腳本,也稱為shell程序或shell命令文件或shell腳本。Shell腳本是由行解釋的,腳本總是用#編寫(xiě)的!/bin/sh,符號(hào)#!用于告訴系統(tǒng)其背后的參數(shù)是用于執(zhí)行文件的程序。如果您想執(zhí)行該腳本,還必須使其可執(zhí)行。然后,您可以通過(guò)輸入來(lái)執(zhí)行您的腳本。/filename。$ cat firstscript.sh #!/bin/Sh回應(yīng)“歡迎您使用base?!碑?dāng)前工作目錄是$ pwd?;芈暋澳闶? logname?!痹黾訄?zhí)行權(quán)限$chmod x第一個(gè)腳本。開(kāi)始運(yùn)行程序:$。/Firstscript.sh,執(zhí)行結(jié)果:歡迎您使用base。當(dāng)前工作目錄是/roo

3、t您是根用戶。shell只有字符變量。外殼變量不需要初始化,未初始化的外殼變量會(huì)自動(dòng)初始化為空字符串。外殼變量名區(qū)分大小寫(xiě)。5.4 shell基本編程,5.4.1 shell變量,Bourne shell有以下四個(gè)變量:局部變量(用戶定義變量),位置變量,即shell腳本的參數(shù),預(yù)定義變量(特殊變量),環(huán)境變量(指shell定制),Shell變量(續(xù)),5.4.1.1局部變量(用戶定義變量),以及用戶當(dāng)前Shell生命中的局部變量。要設(shè)置局部變量,格式為:$變量名=值或$變量名=值。因?yàn)榇蠖鄶?shù)LINUX命令使用小寫(xiě)字符,所以在shell編程中變量通常都是大寫(xiě)的。變量引用:在變量前加$號(hào)。(1)

4、顯示變量,使用echo命令輸出單個(gè)變量的值,此時(shí),在變量名前添加$ $ week=satur $ echo Today是$ weekday,并且輸出:Today是。用大括號(hào)告訴外殼我們要顯示的變量:$ echo Today是$WEEKday輸出:今天是星期六,(2)清除變量:使用unset命令刪除變量的賦值$ z=hello $ echo $ z hello $ unset z $ echo $ z $ ,(3)顯示所有本地外殼變量:使用set命令顯示所有本地定義的外殼變量,(4)組合變量值,echo $變量名1 $變量名2 $ a=hello, $ b=world $ echo $ a $

5、b您好,world,(5)設(shè)置變量的默認(rèn)值,Bourne Shell允許以下列格式設(shè)置變量的默認(rèn)值:$ variable :-default value $ color=blue $ echo今天的天空是$ color:-grey,輸出結(jié)果:今天的天空是藍(lán)色的。 $ color=blue $ unset color $ echo sky是$ color :-grey today sky是grey today $ echo $ color $,以下列格式更改變量值:$ variable :=value $ color=blue $ unset color $ echo sky是$ color 3

6、360=grey today sky是grey today $ echo $ color $ grey,(6)使用變量保存系統(tǒng)命令參數(shù),可以使用變量保存系統(tǒng)命令參數(shù)的替換信息。$ source=/etc/passwd $ CD $ source,(7)以下列格式設(shè)置只讀變量:變量名=值只讀變量名查看所有只讀變量,并使用只讀命令5.4.1.2環(huán)境變量,它用于所有用戶進(jìn)程(通常稱為子進(jìn)程)。登錄過(guò)程稱為父過(guò)程。在s h e l l .中執(zhí)行的用戶進(jìn)程稱為子進(jìn)程。在應(yīng)用到用戶進(jìn)程之前,必須使用export命令導(dǎo)出環(huán)境變量。(1)設(shè)置環(huán)境變量,變量名=值;導(dǎo)出變量名稱也可以是:變量名稱=值導(dǎo)出變量名稱

7、,環(huán)境變量(續(xù)),(2)顯示環(huán)境變量與顯示局部變量相同。使用env命令查看所有環(huán)境變量。(3)清除環(huán)境變量使用取消設(shè)置命令清除環(huán)境變量;(4)set命令,輸出所有外殼變量(包括用戶定義的變量)及其當(dāng)前值,不帶參數(shù)。(5)將變量導(dǎo)出到子進(jìn)程,$cat父親#!/bin/sh #父親腳本回應(yīng)這是父親電影=幾個(gè)好人回應(yīng)我喜歡這部電影:美元電影。/child #調(diào)用子腳本echo返回給父echo,影片為$ :影片,用于將變量導(dǎo)出到子進(jìn)程(續(xù)),$cat child #!/bin/sh #從父親處調(diào)用的子腳本回聲.我是孩子回聲電影是:美元電影=死硬回聲電影換成:美元電影,顯示結(jié)果,這是父親我喜歡的電影:A

8、很少好男人從父親打電話.我是孩子電影是:把電影改成:硬背爸爸電影是:少數(shù)好人,貓爸爸2 #!/bin/sh #父腳本回應(yīng)這是父電影=幾個(gè)好人回應(yīng)我喜歡電影:美元電影#調(diào)用子腳本#但導(dǎo)出變量先導(dǎo)出電影#調(diào)用腳本之前導(dǎo)出變量。/Child echo back to父echo and the film : $ film,output result $。/父親2,這就是我喜歡的父親,電影:A很少好人是父親打來(lái)的.我是孩子電影是:A很少好男人把電影改成:Die硬邦邦給爸爸,電影是:a感覺(jué)好男人,5.4.1.3位置可變參數(shù)。如果您想將信息傳遞給shell腳本,可以使用position參數(shù)來(lái)完成此功能。相關(guān)

9、數(shù)量的參數(shù)被傳遞到腳本中,可以是任意數(shù)量,但是只能訪問(wèn)前九個(gè),并且可以通過(guò)使用shift命令來(lái)改變這個(gè)限制。參數(shù)從第一個(gè)開(kāi)始,到第九個(gè)結(jié)束。每個(gè)訪問(wèn)參數(shù)前面都應(yīng)該有一個(gè)$符號(hào)。第一個(gè)參數(shù)是0,這意味著實(shí)際的腳本名稱被保留和保存。位置變量參數(shù)(續(xù)),例如向腳本傳輸“你看到滿月了嗎”信息:$0 $1 $2 $3 $4 $5 $6腳本名稱“你看到滿月了嗎”7 $8 $9,(1)在腳本中使用位置參數(shù),$cat param #!/bin/sh # param echo這是名為: $0 echo的腳本這是第一個(gè)參數(shù): $1 echo這是第二個(gè)參數(shù): $2 echo這是第三個(gè)para Meter : $3

10、echo這是第六個(gè)參數(shù): $6 echo這是第七個(gè)參數(shù): $7,輸出結(jié)果,執(zhí)行:$。/param你看到滿月了嗎,這是腳本名:/param這是第一個(gè)參數(shù): do這是第二個(gè)參數(shù): You這是第三個(gè)參數(shù):參見(jiàn)這是第六個(gè)參數(shù): Moo N這是第七個(gè)參數(shù):(2)將參數(shù)傳遞給系統(tǒng)命令,$cat findfile #!/bin/sh # findfilefind/-name $ 1 print,5.4.1.4預(yù)定義變量,在shell的開(kāi)頭定義,用戶不能重新定義。所有預(yù)定義的變量都由一個(gè)$符號(hào)和另一個(gè)符號(hào)組成。常用的預(yù)定義變量:$ #傳遞給腳本的參數(shù)數(shù)$ *以單個(gè)字符串顯示傳遞給腳本的所有參數(shù)。與位置變量不同

11、,此選項(xiàng)參數(shù)可以超過(guò)當(dāng)前流程標(biāo)識(shí)號(hào)9 $ $腳本,預(yù)定義變量(續(xù)),$!在后臺(tái)運(yùn)行的最后一個(gè)進(jìn)程的進(jìn)程標(biāo)識(shí)號(hào)與$ #相同,但在使用時(shí)會(huì)被引用,每個(gè)參數(shù)都用引號(hào)返回。$-顯示外殼使用的當(dāng)前選項(xiàng),其功能與set命令相同。顯示最后一個(gè)命令的退出狀態(tài)。0表示沒(méi)有錯(cuò)誤,任何其他值表示有錯(cuò)誤。(1)最后退出狀態(tài),$ cp ok.txt /tmp $ echo $?0 $ CP ok . txt/usr/bin/AAA/BBB CP :無(wú)法創(chuàng)建常規(guī)文件/usr/bin/aaa/bbb:沒(méi)有這樣的文件或目錄$ echo $?1.5.4.2條件t e s t, (1)測(cè)試文件狀態(tài)t e s t一般有兩種格式,即

12、:測(cè)試條件或當(dāng)條件使用方括號(hào)時(shí),注意在條件的兩邊加空格。,測(cè)試文件狀態(tài)(續(xù)), -r文件名:如果文件存在并且可以讀取,則為true-w文件名:如果文件存在并且可以寫(xiě)入,則為T(mén)rue-x文件名:如果文件存在并且可以執(zhí)行,則為T(mén)rue-s文件名:如果文件存在并且至少有一個(gè)字符,則為T(mén)rue-d文件名:如果文件存在并且是目錄,則為T(mén)rue-f文件名:如果文件存在并且是普通文件,則為T(mén)rue-e文件名:如果文件存在,則為T(mén)rue-c文件名:如果文件存在,則為T(mén)rue 是字符類型b文件名的特殊文件:如果文件存在并且是塊類型的特殊文件,則為真。 測(cè)試文件scores.txt是否可寫(xiě)。$ ls l scor

13、es . txt-rw-RR-1 Dave Admin 0 5月15日11:29 scores . txt $-w scores . txt $ echo $?0 $test w scores.txt $echo $?0,簡(jiǎn)單算術(shù)運(yùn)算,格式:$表達(dá)式例如:var1=2 var2=$var1*10 1,那么:var2的值是21。Bash提供了三種對(duì)數(shù)值數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算的方法:(1)使用let命令(2)使用shell擴(kuò)展$(表達(dá)式)(3)使用expr命令(1)let命令,語(yǔ)法:let express-list函數(shù):查找算術(shù)表達(dá)式的值,如果最后一個(gè)表達(dá)式為0,則let命令返回1;否則,它返回0。$ let a=8 和 b=13 #命令中的表達(dá)式包含空格,因此應(yīng)該添加雙引號(hào):$ let c=a b,$ echo的值是$ c。 c的值是21。$ let a *=b $ echo的新值是$ a;“a的新值是104;a和b的乘積,Bash擴(kuò)展,語(yǔ)法:$(表達(dá)式)函數(shù):計(jì)算表達(dá)式并返回其值$ a=8b=13 $ echo“c的新值是$(a)b)?!眂的新值是21。Expr命令,語(yǔ)法:expr args函數(shù):計(jì)算args的值,并將其返回到標(biāo)準(zhǔn)輸出$ var1=10 $ var1=Expr $ var1 1 $ echo $ var1 11,(2

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論