




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第第11章章 shell程序設(shè)計(jì)程序設(shè)計(jì) 2主要內(nèi)容主要內(nèi)容 Shell的作用的作用 Shell程序的編輯和運(yùn)行程序的編輯和運(yùn)行 基于基于Bash的的Shell程序設(shè)計(jì)程序設(shè)計(jì) 變量聲明變量聲明 表達(dá)式表達(dá)式 條件判斷條件判斷 控制結(jié)構(gòu)控制結(jié)構(gòu) 參數(shù)訪問(wèn)參數(shù)訪問(wèn)3Shell的作用的作用 shell是用戶和系統(tǒng)內(nèi)核之間的接口程序是用戶和系統(tǒng)內(nèi)核之間的接口程序 shell是命令解釋器是命令解釋器 在本章中,在本章中,shell指指linux的終端的終端即解釋用戶命令和即解釋用戶命令和shell程序的文字終端程序的文字終端硬硬件件shell操作系統(tǒng)操作系統(tǒng)圖形界面圖形界面其它用戶界面其它用戶界面用
2、戶用戶4linux下的下的shell 用戶使用用戶使用shell的設(shè)定的設(shè)定 通過(guò)查看通過(guò)查看/etc/passwd文件可以查看用戶使用文件可以查看用戶使用的的shell類型類型 例子:例子: /etc/passwd部分節(jié)選部分節(jié)選webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologinxfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologinntp:x:38:38:/etc/ntp:/sbin/nologingdm:x:42:42:/var/gdm:/sbin/nologinhtt:x:100
3、:101:IIIMF Htt:/usr/lib/im:/sbin/nologin#可見(jiàn),tom用戶使用的shell為bash5linux下的下的shell linux下的下的shell 通過(guò)通過(guò)cat /ect/shells命令查看安裝的命令查看安裝的shellshell及路徑及路徑查看查看shell的命令的命令6shell程序程序 Shell程序的特點(diǎn)及用途:程序的特點(diǎn)及用途: shell程序可以認(rèn)為是將程序可以認(rèn)為是將shell命令按照控制結(jié)命令按照控制結(jié)構(gòu)組織到一個(gè)文本文件中,批量的交給構(gòu)組織到一個(gè)文本文件中,批量的交給shell去執(zhí)行去執(zhí)行 不同的不同的shell解釋器使用不同的解釋器
4、使用不同的shell命令語(yǔ)法命令語(yǔ)法 shell程序解釋執(zhí)行,不生成可以執(zhí)行的二進(jìn)程序解釋執(zhí)行,不生成可以執(zhí)行的二進(jìn)制文件制文件 可以幫助用戶完成特定的任務(wù),提高使用、可以幫助用戶完成特定的任務(wù),提高使用、維護(hù)系統(tǒng)的效率維護(hù)系統(tǒng)的效率 了解了解shell程序可以更好的配置和使用程序可以更好的配置和使用linux 7基于基于bash的的shell程序程序 簡(jiǎn)單程序示例簡(jiǎn)單程序示例greeting.sh echo Programme Ends.12say_hello11echo Programme Starts Here.109echo Hello $name8read name7echo Ent
5、er Your Name,Please. :65function say_hello()4#a Function3#a Simple shell Script Example2#!/bin/bash1解釋解釋輸出提示,提示程序結(jié)束輸出提示,提示程序結(jié)束調(diào)用函數(shù)調(diào)用函數(shù)程序開(kāi)始的第一條命令,輸出提示信息程序開(kāi)始的第一條命令,輸出提示信息函數(shù)結(jié)束函數(shù)結(jié)束輸出輸出讀入用戶的輸入到變量讀入用戶的輸入到變量nameecho命令輸出字符串命令輸出字符串函數(shù)開(kāi)始函數(shù)開(kāi)始以以 functin 開(kāi)始,定義函數(shù)開(kāi)始,定義函數(shù)同上同上以以 # 開(kāi)始,其后為程序注釋開(kāi)始,其后為程序注釋以以 #! 開(kāi)始,其后為使用的開(kāi)
6、始,其后為使用的shell8基于基于bash的的shell程序程序 程序編譯和運(yùn)行過(guò)程程序編譯和運(yùn)行過(guò)程 一般步驟:一般步驟: 編輯文件編輯文件 保存文件保存文件 將文件賦予可以執(zhí)行的權(quán)限將文件賦予可以執(zhí)行的權(quán)限 運(yùn)行及排錯(cuò)運(yùn)行及排錯(cuò) 常用到的命令:常用到的命令: vi,編輯、保存文件,編輯、保存文件 ls -l 查看文件權(quán)限查看文件權(quán)限 chmod 改變程序執(zhí)行權(quán)限改變程序執(zhí)行權(quán)限 直接鍵入文件名運(yùn)行文件直接鍵入文件名運(yùn)行文件9shell程序的編輯和執(zhí)行程序的編輯和執(zhí)行查看權(quán)限查看權(quán)限查看權(quán)限,初始狀態(tài)無(wú)執(zhí)行(查看權(quán)限,初始狀態(tài)無(wú)執(zhí)行(x)權(quán)限)權(quán)限增加可執(zhí)行(增加可執(zhí)行(x)的權(quán)限)的權(quán)限
7、查看權(quán)限,已經(jīng)具備執(zhí)行(查看權(quán)限,已經(jīng)具備執(zhí)行(x)權(quán)限)權(quán)限運(yùn)行程序運(yùn)行程序程序運(yùn)行過(guò)程輸出程序運(yùn)行過(guò)程輸出10shell程序設(shè)計(jì)程序設(shè)計(jì) 一般結(jié)構(gòu)一般結(jié)構(gòu) shell類型類型 函數(shù)函數(shù) 主過(guò)程主過(guò)程#!/bin/bashfunction fun1().funciton funn().函數(shù)定義函數(shù)定義shell類型類型主過(guò)程主過(guò)程11變量的聲明和使用變量的聲明和使用 變量的聲明和使用變量的聲明和使用 變量是弱類型的變量是弱類型的 聲明變量不用聲明類型聲明變量不用聲明類型 可以存儲(chǔ)不同類型的內(nèi)容可以存儲(chǔ)不同類型的內(nèi)容 使用靈活使用靈活 使用時(shí)要明確變量的類型使用時(shí)要明確變量的類型 大小寫區(qū)分大
8、小寫區(qū)分 變量聲明及賦值格式變量聲明及賦值格式 格式:格式:變量值變量值(注意:等號(hào)兩側(cè)不能有空格)(注意:等號(hào)兩側(cè)不能有空格) 例如:例如:a=”hello ”b=912變量的聲明和使用變量的聲明和使用 變量的引用變量的引用 格式格式:$變量名,或者變量名,或者$變量名變量名變量名為一個(gè)字符用方式一,變量名多于一個(gè)字變量名為一個(gè)字符用方式一,變量名多于一個(gè)字符建議用第符建議用第2中方式中方式 例子:例子:a=1abc=helloecho $aecho $abc13常用的運(yùn)算符常用的運(yùn)算符 整數(shù)的算術(shù)運(yùn)算符整數(shù)的算術(shù)運(yùn)算符 +、*、/、%; 賦值運(yùn)算符賦值運(yùn)算符 、*、/、 位運(yùn)算符位運(yùn)算符
9、、&、|、; 位運(yùn)算賦值運(yùn)算符位運(yùn)算賦值運(yùn)算符 、&、|、; 邏輯運(yùn)算符:邏輯運(yùn)算符: &,|,!,!,!, 14簡(jiǎn)單數(shù)學(xué)表達(dá)式簡(jiǎn)單數(shù)學(xué)表達(dá)式 expr命令計(jì)算一個(gè)表達(dá)式的值命令計(jì)算一個(gè)表達(dá)式的值 格式格式 :expr arg 例子:計(jì)算(例子:計(jì)算(23)4的值的值1、分步計(jì)算,即先計(jì)算、分步計(jì)算,即先計(jì)算23,再對(duì)其和乘,再對(duì)其和乘4s=expr 2 + 3expr $s * 42、一步完成計(jì)算:、一步完成計(jì)算:expr expr 2 + 3 * 4 說(shuō)明:說(shuō)明: 運(yùn)算符號(hào)和參數(shù)之間要有空格分開(kāi);運(yùn)算符號(hào)和參數(shù)之間要有空格分開(kāi); 通配符號(hào)(通配符號(hào)(*),在作為乘法運(yùn)算符時(shí)要用在作為乘法運(yùn)
10、算符時(shí)要用、“”“”、符號(hào)修飾符號(hào)修飾15簡(jiǎn)單數(shù)學(xué)表達(dá)式簡(jiǎn)單數(shù)學(xué)表達(dá)式 let命令命令 格式:格式:let arg1 arg2 . 例子:計(jì)算(例子:計(jì)算(23)4的值的值let s=(2+3)*4 說(shuō)明:說(shuō)明: 與與expr命令相比,命令相比,let命令更簡(jiǎn)潔直觀命令更簡(jiǎn)潔直觀 當(dāng)運(yùn)算符中有當(dāng)運(yùn)算符中有、&、|等符號(hào)時(shí),同樣需要等符號(hào)時(shí),同樣需要用引號(hào)(單引號(hào)、雙引號(hào))或者斜杠來(lái)修飾運(yùn)算用引號(hào)(單引號(hào)、雙引號(hào))或者斜杠來(lái)修飾運(yùn)算符符16條件判斷條件判斷 常見(jiàn)的條件:常見(jiàn)的條件: 變量屬性;變量屬性; 文件屬性;文件屬性; 命令執(zhí)行結(jié)果;命令執(zhí)行結(jié)果; 多種條件的邏輯組合;多種條件的邏輯組合;
11、 判斷結(jié)果的一般定義:判斷結(jié)果的一般定義: 真:真:0 假:假:1 格式:格式: test condition condition 17條件判斷條件判斷 測(cè)試文件屬性測(cè)試文件屬性常用的文件屬性條件判斷常用的文件屬性條件判斷-f fn如果如果fn存在且存在且fn為普通文件則返回真,否則返回假。為普通文件則返回真,否則返回假。-b fn如果如果fn存在且存在且fn為塊設(shè)備則返回真,否則返回假。為塊設(shè)備則返回真,否則返回假。-e fn如果如果fn存在則返回真,否則返回假。存在則返回真,否則返回假。-d fn如果如果fn 存在且存在且fn為目錄則返回真,否則返回假。為目錄則返回真,否則返回假。-r f
12、n如果如果fn存在且存在且fn可讀則返回真,否則返回假??勺x則返回真,否則返回假。-w fn如果如果fn存在且存在且fn可寫則返回真,否則返回假??蓪憚t返回真,否則返回假。-x fn如果如果fn存在且存在且fn可執(zhí)行則返回真,否則返回假??蓤?zhí)行則返回真,否則返回假。-O fn如果如果fn存在且被當(dāng)前用戶擁有則返回真,否則返回假。存在且被當(dāng)前用戶擁有則返回真,否則返回假。-L fn如果如果fn存在且存在且fn為符號(hào)鏈接則返回真,否則返回假。為符號(hào)鏈接則返回真,否則返回假。18條件判斷條件判斷 字符串屬性字符串屬性 常用字符串屬性條件判斷常用字符串屬性條件判斷string_1 = string_2
13、如果如果string_1和和string_2兩個(gè)字符串相等則返兩個(gè)字符串相等則返回真,否則返回假;回真,否則返回假;string_1 != string_2如果如果string_1和和string_2兩個(gè)字符串不相等則兩個(gè)字符串不相等則返回真,否則返回假;返回真,否則返回假;-z string如果字符串如果字符串string的長(zhǎng)度為的長(zhǎng)度為0則返回真,否則則返回真,否則返回假;返回假;-n string如果字符串如果字符串string長(zhǎng)度不為長(zhǎng)度不為0則返回真,否則則返回真,否則返回假;返回假;string同同-n string,如果字符串,如果字符串string長(zhǎng)度不為長(zhǎng)度不為0返返回真,否
14、則返回假。回真,否則返回假。19整數(shù)關(guān)系整數(shù)關(guān)系 整數(shù)間關(guān)系判斷整數(shù)間關(guān)系判斷常用的整數(shù)關(guān)系條件判斷常用的整數(shù)關(guān)系條件判斷mum_1 eq num_2如果如果num_1和和num_2相等則返回真,否則返回相等則返回真,否則返回假;假;mum_1 ne num_2如果如果num_1不等于不等于num_2則返回真,否則返回則返回真,否則返回假;假;mum_1 gt num_2如果如果num_1大于大于num_2則返回真,否則返回假;則返回真,否則返回假;mum_1 lt num_2如果如果num_1小于小于num_2則返回真,否則返回假;則返回真,否則返回假;mum_1 le num_2如果如果n
15、um_1小于等于小于等于num_2則返回真,否則返則返回真,否則返回假;回假;mum_1 ge num_2如果如果num_1大于等于大于等于num_2則返回真,否則返則返回真,否則返回假;回假;20控制結(jié)構(gòu)控制結(jié)構(gòu) 控制結(jié)構(gòu):控制結(jié)構(gòu):根據(jù)某個(gè)條件的判斷結(jié)果,改變程序執(zhí)行根據(jù)某個(gè)條件的判斷結(jié)果,改變程序執(zhí)行的路徑??梢院?jiǎn)單的將控制結(jié)構(gòu)分為分支和循的路徑??梢院?jiǎn)單的將控制結(jié)構(gòu)分為分支和循環(huán)兩種環(huán)兩種 。 常見(jiàn)分支結(jié)構(gòu):常見(jiàn)分支結(jié)構(gòu): if case 常見(jiàn)循環(huán)結(jié)構(gòu):常見(jiàn)循環(huán)結(jié)構(gòu): for while until21if分支分支 格式:格式: 說(shuō)明:說(shuō)明: 中括號(hào)中的部分可省中括號(hào)中的部分可省略;略
16、; 當(dāng)條件為真(當(dāng)條件為真(0)時(shí))時(shí)執(zhí)行執(zhí)行then后面的語(yǔ)句,后面的語(yǔ)句,否則執(zhí)行否則執(zhí)行else后面的后面的語(yǔ)句;語(yǔ)句; 以以fi作為作為if結(jié)構(gòu)的結(jié)束。結(jié)構(gòu)的結(jié)束。if 條件條件1then命令命令elif 條件條件2then命令命令else命令命令fi22case分支分支 格式:格式: 說(shuō)明:說(shuō)明: “條件條件”可以是變量、可以是變量、表達(dá)式、表達(dá)式、shell命令等;命令等; “模式模式”為條件的值,為條件的值,并且一個(gè)并且一個(gè)“模式模式”可可以匹配多種值,不同以匹配多種值,不同值之間用豎線(值之間用豎線(|)聯(lián))聯(lián)結(jié)結(jié) ; 一個(gè)模式要用雙分號(hào)一個(gè)模式要用雙分號(hào)(;)作為結(jié)束(;)作
17、為結(jié)束 ; 以逆序的以逆序的case命令命令(esac)表示)表示case分分支語(yǔ)句的結(jié)束支語(yǔ)句的結(jié)束 case 條件條件 in模式模式1)命令命令1;模式模式2)命令命令2;.模式模式n)命令命令n;esac23for循環(huán)循環(huán) 格式格式 說(shuō)明:說(shuō)明: “列表列表”為存儲(chǔ)了一系為存儲(chǔ)了一系列值的列表,隨著循環(huán)列值的列表,隨著循環(huán)的進(jìn)行,變量從列表中的進(jìn)行,變量從列表中的第一個(gè)值依次取到最的第一個(gè)值依次取到最后一個(gè)值;后一個(gè)值; do和和done之間的命令通之間的命令通常為根據(jù)變量進(jìn)行處理常為根據(jù)變量進(jìn)行處理的一系列命令,這些命的一系列命令,這些命令每次循環(huán)都執(zhí)行一次;令每次循環(huán)都執(zhí)行一次; 如
18、果中括號(hào)中的部分省如果中括號(hào)中的部分省略掉,略掉,Bash則認(rèn)為是則認(rèn)為是“in $”,即執(zhí)行該程,即執(zhí)行該程序時(shí)通過(guò)命令行傳給程序時(shí)通過(guò)命令行傳給程序的所有參數(shù)的列表。序的所有參數(shù)的列表。 for 變量變量 in 列表列表do命令(通常用命令(通常用到循環(huán)變量)到循環(huán)變量)done24while循環(huán)與循環(huán)與until循環(huán)循環(huán) 格式:格式: 說(shuō)明:說(shuō)明: while循環(huán)中,只要條循環(huán)中,只要條件為真,就執(zhí)行件為真,就執(zhí)行do和和done之間的循環(huán)命令;之間的循環(huán)命令; until循環(huán)中,只要條循環(huán)中,只要條件不為真,就執(zhí)行件不為真,就執(zhí)行do和和done之間的循環(huán)命之間的循環(huán)命令,或者說(shuō),在令
19、,或者說(shuō),在until循環(huán)中,一直執(zhí)行循環(huán)中,一直執(zhí)行do和和done之間的循環(huán)命之間的循環(huán)命令,直到條件為真;令,直到條件為真; 避免生成死循環(huán)。避免生成死循環(huán)。 while/until 條件條件do命令命令done25函數(shù)函數(shù) 格式:格式: 定義:定義: 引用:引用: 說(shuō)明:說(shuō)明: 中括號(hào)中的部分可以省中括號(hào)中的部分可以省略;略; 如果在函數(shù)內(nèi)部需要使如果在函數(shù)內(nèi)部需要使用傳遞給函數(shù)的參數(shù),用傳遞給函數(shù)的參數(shù),一般用一般用$0、$1、.、$n,以及,以及$#、$*、$這些特殊變量這些特殊變量 : $0為執(zhí)行腳本的文件名;為執(zhí)行腳本的文件名; $1是傳遞給函數(shù)的第是傳遞給函數(shù)的第1個(gè)參數(shù)個(gè)參數(shù) ; $#為傳遞給函數(shù)的參數(shù)為傳遞給函數(shù)的參數(shù)個(gè)數(shù);個(gè)數(shù); $*和和$為傳遞給函數(shù)的為傳遞給函數(shù)的所有參數(shù)所有參數(shù) function 函數(shù)名()函數(shù)名()命令命令函數(shù)名函數(shù)名 參數(shù)參數(shù)1 參數(shù)參數(shù)2 .參數(shù)參數(shù)n 26函數(shù)對(duì)變量的訪問(wèn)示例函數(shù)對(duì)變量的訪問(wèn)示例利用利用shift訪問(wèn)參數(shù)變量訪問(wèn)參數(shù)變量 function demo_fun()函數(shù)開(kāi)始函數(shù)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 出租電摩合同范本
- 農(nóng)田改造 協(xié)議 合同范本
- 包包買賣合同范本
- 加工窗簾合同范本
- 內(nèi)衣采購(gòu)合同范本
- 伊利收購(gòu)牛奶合同范本
- 人工血管采購(gòu)合同范本
- 高等教育與產(chǎn)業(yè)發(fā)展的協(xié)同效應(yīng)
- 新型儲(chǔ)能設(shè)備項(xiàng)目投資計(jì)劃書(范文參考)
- 科技類短視頻的科技前沿與未來(lái)趨勢(shì)
- (高清版)WST 402-2024 臨床實(shí)驗(yàn)室定量檢驗(yàn)項(xiàng)目參考區(qū)間的制定
- 中英對(duì)照版-中文版-The-Dead-By-James-Joyces死者-詹姆斯-喬伊斯
- 清水河儲(chǔ)能電站施工方案設(shè)計(jì)
- 低溫絕熱液氧瓶充裝操作規(guī)程模版(2篇)
- (正式版)JBT 11517-2024 刮板取料機(jī)
- 大眾汽車使用說(shuō)明書
- 小學(xué)科學(xué)湘科版五年級(jí)下冊(cè)全冊(cè)教案2023春
- 2024年學(xué)校法制副校長(zhǎng)工作職責(zé) 法制副校長(zhǎng)聘任書(5篇)
- 《鄧稼先》公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)
- (高清版)DZT 0145-2017 土壤地球化學(xué)測(cè)量規(guī)程
- 老舊小區(qū)物業(yè)管理方案
評(píng)論
0/150
提交評(píng)論