第五章程序設(shè)計(jì)_第1頁(yè)
第五章程序設(shè)計(jì)_第2頁(yè)
第五章程序設(shè)計(jì)_第3頁(yè)
第五章程序設(shè)計(jì)_第4頁(yè)
第五章程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第五章程序設(shè)計(jì)第一頁(yè),共七十九頁(yè),2022年,8月28日Linux內(nèi)核概述shell層是內(nèi)核之外的中間層,是用戶(hù)和系統(tǒng)交互的界面。第二頁(yè),共七十九頁(yè),2022年,8月28日2Linux內(nèi)核概述在前面章節(jié),shell被解釋為命令解釋程序,即,它接收用戶(hù)輸入的命令,然后創(chuàng)建子進(jìn)程,由子進(jìn)程實(shí)現(xiàn)命令所規(guī)定的功能,等子進(jìn)程終止工作后發(fā)出提示符。這是shell常見(jiàn)的使用方式。第三頁(yè),共七十九頁(yè),2022年,8月28日3Linux內(nèi)核概述其實(shí)shell還是一種高級(jí)程序設(shè)計(jì)語(yǔ)言,它有變量、關(guān)鍵字還有各種控制語(yǔ)句第四頁(yè),共七十九頁(yè),2022年,8月28日4Linux

shell程序設(shè)計(jì)Linux提供多種不同的shell。常用的有Bourneshell(簡(jiǎn)稱(chēng)sh)、C-shell(簡(jiǎn)稱(chēng)csh)、Kornshell(簡(jiǎn)稱(chēng)ksh)和BourneAgainshell(簡(jiǎn)稱(chēng)bash)。

第五頁(yè),共七十九頁(yè),2022年,8月28日5Linux

shell程序設(shè)計(jì)Bourneshell是AT&TBell實(shí)驗(yàn)室為AT&T的UNIX開(kāi)發(fā)的,是UNIX默認(rèn)的shell第六頁(yè),共七十九頁(yè),2022年,8月28日6Linux

shell程序設(shè)計(jì)C-shell(簡(jiǎn)稱(chēng)csh)是加州伯克利大學(xué)的BillJoy為BSDUNIX開(kāi)發(fā)的,與sh不一樣第七頁(yè),共七十九頁(yè),2022年,8月28日7Linux

shell程序設(shè)計(jì)Kornshell(簡(jiǎn)稱(chēng)ksh)也是AT&TBell實(shí)驗(yàn)室開(kāi)發(fā)的,其命令交互界面和編程界面很好第八頁(yè),共七十九頁(yè),2022年,8月28日8Linux

shell程序設(shè)計(jì)BourneAgainshell(簡(jiǎn)稱(chēng)bash)是GNU開(kāi)發(fā)的一個(gè)shell,是Linux默認(rèn)的shell第九頁(yè),共七十九頁(yè),2022年,8月28日9Linux

shell程序設(shè)計(jì)shell特點(diǎn):☆對(duì)已有命令進(jìn)行組合構(gòu)成新命令,組合方式簡(jiǎn)單;☆提供了文件名擴(kuò)展字符,使單一字符串可以匹配多個(gè)文件名;☆可以直接使用shell的內(nèi)置命令而不需創(chuàng)建新的進(jìn)程;☆shell靈活使用數(shù)據(jù)流,提供通配符、輸入/輸出重定向、管道線(xiàn)等機(jī)制;☆提供了順序流程控制、條件控制、循環(huán)控制語(yǔ)句;☆shell提供了在后臺(tái)執(zhí)行命令的能力;☆shell提供了可配置的環(huán)境,允許用戶(hù)創(chuàng)建修改命令、命令提示符等系統(tǒng)行為;☆shell提供了一個(gè)高級(jí)的命令語(yǔ)言,允許用戶(hù)創(chuàng)建簡(jiǎn)單和復(fù)雜的程序。操作系統(tǒng)本身自帶的命令。不需要外部軟件支持的命令,如:cd、echo、kill等命令第十頁(yè),共七十九頁(yè),2022年,8月28日10Linux

shell程序設(shè)計(jì)shell腳本的創(chuàng)建和執(zhí)行:☆使用shell的最簡(jiǎn)單的方法是從鍵盤(pán)上直接輸入命令行或存入文件中,這種被shell解釋執(zhí)行的文件為shell腳本?!罾镁庉嬈鹘⒁粋€(gè)shell腳本,和普通文件一樣,例:$viex1建立一個(gè)名字為ex1的shell腳本第十一頁(yè),共七十九頁(yè),2022年,8月28日11Linux

shell程序設(shè)計(jì)☆執(zhí)行shell腳本的方式有三種:(1)$bash<腳本名(2)$bash腳本名[參數(shù)](3)將shell腳本的權(quán)限設(shè)置為可執(zhí)行,然后再提示符下直接執(zhí)行它用輸入重定向讓shell從給定文件中讀入命令行,進(jìn)行相應(yīng)處理。

以腳本名作為參數(shù)傳遞給程序中的命令例(1)$bash<ex1(2)$·

ex1(3)$chmoda+xex2$./ex2()腳本后面不能帶參數(shù)目前使用的shell以·表示把shell腳本ex2置為對(duì)所有用戶(hù)都有執(zhí)行權(quán)限,然后在提示符后可以直接執(zhí)行該文件第十二頁(yè),共七十九頁(yè),2022年,8月28日12Linux

shell程序設(shè)計(jì)☆bash提供了命令歷史功能,即系統(tǒng)為每一個(gè)用戶(hù)維護(hù)一個(gè)命令歷史文件(/root/.bash_history),該文件把用戶(hù)輸入的命令自動(dòng)的加到該命令歷史表中。用戶(hù)可以調(diào)用或者修改以前的命令。

$HISTFILE=”/home/.test_history”$HISTSIZE=100可以通過(guò)HISTFILE改變存放歷史命令的文件將歷史命令存放在/home/.test_history下設(shè)置歷史文件中可以保留100條歷史命令,默認(rèn)是500第十三頁(yè),共七十九頁(yè),2022年,8月28日13Linux

shell程序設(shè)計(jì)☆顯示命令歷史表中的命令

history[option][arg…]顯示歷史命令,包括剛輸入的history例:$history$history50顯示歷史表中的最后50行命令第十四頁(yè),共七十九頁(yè),2022年,8月28日14Linux

shell程序設(shè)計(jì)☆執(zhí)行歷史命令:以字符“!”開(kāi)頭,后隨一個(gè)或多個(gè)字符來(lái)定義某種類(lèi)型的歷史命令。(符號(hào)間沒(méi)有空格)格式意義??!重復(fù)上一條命令,相當(dāng)于!-1?。钪匦聢?zhí)行第n條歷史命令!-n重新執(zhí)行倒數(shù)第n條歷史命令。!-1等于?。。tring重新執(zhí)行以字符串string開(kāi)頭的最近的歷史命令行。例:!ca表示訪問(wèn)最近的cat命令!?string?重新執(zhí)行最近的、包含string的歷史命令。例:!?hist?表示重復(fù)前面含有hist的命令第十五頁(yè),共七十九頁(yè),2022年,8月28日15Linux

shell程序設(shè)計(jì)☆名稱(chēng)補(bǔ)全:在bash命令行上輸入目錄名和文件名時(shí),可以按tab鍵讓系統(tǒng)自動(dòng)補(bǔ)全剩余的部分。例:$cd/us$cate系統(tǒng)自動(dòng)補(bǔ)全/usr如果目錄中有ex1、ex2、exam1則系統(tǒng)會(huì)補(bǔ)全到三者相同部分的最后一個(gè)字符,屏幕顯示為$catex,如果此時(shí)用戶(hù)繼續(xù)按Tab鍵,屏幕顯示為$catexex1ex2exam1等待用戶(hù)選擇第十六頁(yè),共七十九頁(yè),2022年,8月28日16Linux

shell程序設(shè)計(jì)☆別名:對(duì)于常用的選項(xiàng)或參數(shù)比較多的固定命令可以取個(gè)別名替換,定義別名的命令

alias[name[=value]]…

例:$alias$aliasll=’ls-l’$ll$aliasll=ls-l$ll在屏幕上顯示別名清單等價(jià)于$ls-l等價(jià)于$ls第十七頁(yè),共七十九頁(yè),2022年,8月28日17Linux

shell程序設(shè)計(jì)☆別名:對(duì)于常用的選項(xiàng)或參數(shù)比較多的固定命令可以取個(gè)別名替換,定義別名的命令

alias[name[=value]]…☆取消別名:unaliasname執(zhí)行后從別名表中刪除name指定的別名第十八頁(yè),共七十九頁(yè),2022年,8月28日18Linux

shell程序設(shè)計(jì)第十九頁(yè),共七十九頁(yè),2022年,8月28日19Linux

shell程序設(shè)計(jì)☆模式表達(dá)式:除了*、?和[…]之外還有以下形式:(1)*(模式表):匹配給定模式表中的模式的0次或多次出現(xiàn),各模式以|分開(kāi);(2)+(模式表):匹配給定模式表中的模式的1次或多次出現(xiàn),各模式以|分開(kāi);(3)?(模式表):匹配給定模式表中任一模式的0次或1次出現(xiàn),各模式以|分開(kāi);(4)@(模式表):僅匹配模式表中的給定模式的1次出現(xiàn);(5)?。J奖恚撼o定模式表中的模式外匹配其他任何模式第二十頁(yè),共七十九頁(yè),2022年,8月28日20Linux

shell程序設(shè)計(jì)例:file*(.c|.o)將匹配文件file、file.c、file.o、、、、等

file+(.c|.o)將匹配文件file.c、file.o、、、、等,不匹配file

file?(.c|.o)只匹配文件file、file.c、file.o,不匹配、、、等,

file@(.c|.o)只匹配文件file.c、file.o不匹配file、、、、等第二十一頁(yè),共七十九頁(yè),2022年,8月28日21Linux

shell程序設(shè)計(jì)☆引號(hào):分為單引號(hào)、雙引號(hào)和倒引號(hào)。用雙引號(hào)括起來(lái)除$、倒引號(hào)(`)和反斜線(xiàn)(\)之外都作為普通字符對(duì)待,$表示變量替換;倒引號(hào)(`)表示命令替換;反斜線(xiàn)(\)表示轉(zhuǎn)義字符。單引號(hào)括起來(lái)的字符表示都是普通字符。倒引號(hào)(`)括起來(lái)的字符被shell解釋為命令行。第二十二頁(yè),共七十九頁(yè),2022年,8月28日22Linux

shell程序設(shè)計(jì)例:$catex3echo“currentdirectoryis`pwd`”echo”homedirectoryis$HOME”echo“file*.?”$bashex3currentdirectoryis/homehomedirectoryis/rootfile*.?第二十三頁(yè),共七十九頁(yè),2022年,8月28日23Linux

shell程序設(shè)計(jì)☆注釋?zhuān)簊hell程序中以#開(kāi)頭的正文行表示注釋?zhuān)辉趕hell腳本的第一行以#!開(kāi)頭表示該腳本是用哪種shell編寫(xiě)的,從而調(diào)用相應(yīng)的解釋程序執(zhí)行?!詈笈_(tái)命令:當(dāng)程序執(zhí)行需要時(shí)間過(guò)長(zhǎng)時(shí),那么在命令最后輸入&符號(hào),則shell在后臺(tái)啟動(dòng)該程序,馬上顯示下一個(gè)提示符,允許用戶(hù)輸入新的命令。第二十四頁(yè),共七十九頁(yè),2022年,8月28日24Linux

shell程序設(shè)計(jì)等價(jià)于pwd這里分號(hào)隔開(kāi)的命令,前面的命令執(zhí)行成功who|wc–l與否并不影響后面命令的執(zhí)行

cd/home☆命令執(zhí)行操作符:多條命令可以在一行中出現(xiàn),各命令之間以分號(hào)隔開(kāi),例pwd;who|wc-l;cd/home第二十五頁(yè),共七十九頁(yè),2022年,8月28日25Linux

shell程序設(shè)計(jì)☆命令執(zhí)行操作符:邏輯與操作符&&可將兩個(gè)命令聯(lián)系在一起,命令1&&命令2表示先執(zhí)行命令1,如果執(zhí)行成功才執(zhí)行命令2,否則不執(zhí)行命令2。邏輯非操作符||可將兩個(gè)命令聯(lián)系在一起,命令1||命令2表示先執(zhí)行命令1,如果不成功則執(zhí)行命令2,如果命令成功則不執(zhí)行命令2。第二十六頁(yè),共七十九頁(yè),2022年,8月28日26Linux

shell程序設(shè)計(jì)第二十七頁(yè),共七十九頁(yè),2022年,8月28日27Linux

shell程序設(shè)計(jì)☆成組命令:在shell中有兩種方式將若干命令組合在一起,一個(gè)是花括號(hào),一個(gè)是圓括號(hào);(1){…;}形式:以花括號(hào)括起來(lái)的全部命令作為一條命令執(zhí)行,左括號(hào)后有一個(gè)空格右括號(hào)前有分號(hào)

(2)(…)形式:左括號(hào)后不需有空格,右括號(hào)之前也不需加分號(hào)例:${echo“userreportfor`date`”;who;}|cat(echo和who命令的執(zhí)行結(jié)果經(jīng)管道傳給屏幕進(jìn)行輸出)第二十八頁(yè),共七十九頁(yè),2022年,8月28日28Linux

shell程序設(shè)計(jì)二者區(qū)別:花括號(hào)括起來(lái)的組命令在本shell執(zhí)行命令,不產(chǎn)生新進(jìn)程;圓括號(hào)括起來(lái)的組命令要在新的子shell內(nèi)執(zhí)行,要建立新的子進(jìn)程。第二十九頁(yè),共七十九頁(yè),2022年,8月28日29Linux

shell程序設(shè)計(jì)shell有兩類(lèi)變量:環(huán)境變量和臨時(shí)變量。環(huán)境變量是永久性變量,值不會(huì)隨shell腳本執(zhí)行結(jié)束而消失;臨時(shí)變量是在shell程序內(nèi)部定義,使用范圍僅限于定義它的程序,出了程序就不能使用,程序結(jié)束后,它的值就不存在了。環(huán)境變量像$HOME(用戶(hù)主目錄的全路徑)$LOGNAME(用戶(hù)的注冊(cè)名,通過(guò)該變量系統(tǒng)來(lái)確認(rèn)用戶(hù)是否是文件的擁有者,是否有權(quán)利執(zhí)行某個(gè)命令)$PATH(shell從中查找命令的目錄列表,例:PATH=$PATH:/home)

第三十頁(yè),共七十九頁(yè),2022年,8月28日30Linux

shell程序設(shè)計(jì)☆用戶(hù)定義的變量:變量名是以字母或下劃線(xiàn)開(kāi)頭,由字母、下劃線(xiàn)和數(shù)字組成的序列。大小寫(xiě)意義不同,變量長(zhǎng)度不受限制。定義變量并賦值的一般形式變量名=字符串引用變量時(shí)用“$變量”第三十一頁(yè),共七十九頁(yè),2022年,8月28日31Linux

shell程序設(shè)計(jì)例:$dir=/home/ccc$echo$dir$echodir$today=Sunday$echo$today$Today$dir=/home/cc$cat${dir}c/mi.c$cat$dirc/mi.c$cat$dir/mi.c顯示結(jié)果/home/ccc顯示結(jié)果dir顯示結(jié)果SundayToday未被賦值,為空串將文件/home/ccc/mi.c顯示出來(lái)提示出錯(cuò),認(rèn)為dirc是個(gè)新變量,前面未賦值,所以找不到文件mi.c將文件/home/cc/mi.c顯示出來(lái)第三十二頁(yè),共七十九頁(yè),2022年,8月28日32Linux

shell程序設(shè)計(jì)☆數(shù)組:bash只提供一維數(shù)組,數(shù)組元素下標(biāo)由0開(kāi)始編號(hào)。一般形式為:declare

–a數(shù)組名讀取數(shù)組元素值的一般形式是:${數(shù)組名[下標(biāo)]}對(duì)數(shù)組元素賦值的一般形式是:數(shù)組名[下標(biāo)]=值或數(shù)組名=(值1值2……值n)第三十三頁(yè),共七十九頁(yè),2022年,8月28日33Linux

shell程序設(shè)計(jì)例:$city[0]=Beijing$city[1]=Shanghai$echo${city[0]}$A=(thisisanexampleofshellscript)$echo${A[0]}${A[2]}${A[3]}${A[6]}$echo${A[8]}顯示結(jié)果Beijing顯示結(jié)果結(jié)果顯示為thisanexamplescript顯示結(jié)果結(jié)果顯示為空串第三十四頁(yè),共七十九頁(yè),2022年,8月28日34Linux

shell程序設(shè)計(jì)☆輸入命令——read命令:從鍵盤(pán)上讀取數(shù)據(jù),然后賦給指定的變量,例$readxyzTodayisMonday$echo$z$x$y顯示結(jié)果Monday

Todayis第三十五頁(yè),共七十九頁(yè),2022年,8月28日35Linux

shell程序設(shè)計(jì)☆輸入命令——read命令:從鍵盤(pán)上讀取數(shù)據(jù),然后賦給指定的變量,例$readn1n2n3FirstSecondThird1234abcd(回車(chē)鍵)

$echo$n3

$echo$n2$n1變量個(gè)數(shù)少于數(shù)據(jù)個(gè)數(shù)時(shí),從左往右對(duì)應(yīng)賦值,最后一個(gè)變量被賦予剩余的所有數(shù)據(jù)顯示結(jié)果為T(mén)hird1234abcd顯示結(jié)果為SecondFirst第三十六頁(yè),共七十九頁(yè),2022年,8月28日36Linux

shell程序設(shè)計(jì)☆輸入命令——read命令:從鍵盤(pán)上讀取數(shù)據(jù),然后賦給指定的變量,例$readn1n2n312(回車(chē)鍵)

$echo$n3$echo$n2$n1變量個(gè)數(shù)多于給定的數(shù)據(jù)個(gè)數(shù)時(shí),依次對(duì)應(yīng)賦值,沒(méi)有數(shù)據(jù)對(duì)應(yīng)的取空串顯示結(jié)果為空串顯示結(jié)果為21第三十七頁(yè),共七十九頁(yè),2022年,8月28日37Linux

shell程序設(shè)計(jì)☆預(yù)先定義的特殊變量(1)$#——命令行上參數(shù)的個(gè)數(shù)(2)$?——上一條命令的返回值,執(zhí)行成功為0;執(zhí)行失敗返回非0值(3)$$——當(dāng)前進(jìn)程的進(jìn)程號(hào)(4)$!——上一個(gè)后臺(tái)命令對(duì)應(yīng)的進(jìn)程號(hào),由1~5位數(shù)字構(gòu)成(5)$-——由當(dāng)前shell設(shè)置的執(zhí)行標(biāo)志名組成的字符串(6)$*——表示在命令行中實(shí)際給出的所有實(shí)參字符串例ex6m1.cm2.c($#值為2)第三十八頁(yè),共七十九頁(yè),2022年,8月28日38Linux

shell程序設(shè)計(jì)第三十九頁(yè),共七十九頁(yè),2022年,8月28日39Linux

shell程序設(shè)計(jì)bash中執(zhí)行整數(shù)算術(shù)運(yùn)算的命令是let,語(yǔ)法格式:letarg…

例:let“j=i*6+2”等價(jià)于((j=i*6+2))第四十頁(yè),共七十九頁(yè),2022年,8月28日40Linux

shell程序設(shè)計(jì)優(yōu)先級(jí)運(yùn)算符結(jié)合性功能1-、+從右至左取表達(dá)式負(fù)值、正值2!、~從右至左邏輯非、按位取反3**從左至右方冪4*、/、%從左至右乘、除、取模5+、-從左至右加、減6<<、>>從左至右左移若干二進(jìn)制位、右移若干二進(jìn)制位、第四十一頁(yè),共七十九頁(yè),2022年,8月28日41Linux

shell程序設(shè)計(jì)7>、>=、<、<=從左至右大于、大于或等于、小于、小于或等于8==、?。綇淖笾劣蚁嗟取⒉幌嗟龋?從左至右按位與10^從左至右按位異或11|從左至右按位或12&&從左至右邏輯與13||從左至右邏輯或14?:從右至左條件計(jì)算15=、+=、-=、*=/=、%=&=、^=、|=、<<=、>>=從右至左賦值運(yùn)算且賦值第四十二頁(yè),共七十九頁(yè),2022年,8月28日42Linux

shell程序設(shè)計(jì)注意:當(dāng)表達(dá)式中有shell特殊字符時(shí),必須用雙引號(hào)括起來(lái)。例:$let“v=6|5”$echo$v$let

v=6|5

顯示結(jié)果為7結(jié)果提示出錯(cuò),把|看成管道符,左右兩邊由于不是命令因而無(wú)法正確執(zhí)行第四十三頁(yè),共七十九頁(yè),2022年,8月28日43Linux

shell程序設(shè)計(jì)☆if語(yǔ)句一般格式:if測(cè)試條件then命令1else命令2fi

第四十四頁(yè),共七十九頁(yè),2022年,8月28日44Linux

shell程序設(shè)計(jì)例:

iftest-f“$1”thenecho“$1isanordinaryfile.”

elseecho“$1isnotanordinaryfile.”fi

通過(guò)test命令測(cè)試$1是否是一個(gè)已存在的普通文件,如果是則顯示$1isanordinaryfile.否則顯示$1isnotanordinaryfile第四十五頁(yè),共七十九頁(yè),2022年,8月28日45Linux

shell程序設(shè)計(jì)例:

iftest-f“$1”thenecho“$1isanordinaryfile.”

elseecho“$1isnotanordinaryfile.”fi

用test命令或一對(duì)方括號(hào)括起來(lái)是等價(jià)的,

test–f“$1”等價(jià)于[–f“$1”]

第四十六頁(yè),共七十九頁(yè),2022年,8月28日46Linux

shell程序設(shè)計(jì)☆條件測(cè)試命令——test(1)文件測(cè)試運(yùn)算符及其功能參數(shù)功能-r文件名若文件存在并且是用戶(hù)可讀的,則測(cè)試條件為真-w文件名若文件存在并且是用戶(hù)可寫(xiě)的,則測(cè)試條件為真-x文件名若文件存在并且是用戶(hù)可執(zhí)行的,則測(cè)試條件為真-f文件名若文件存在并且是普通文件,則測(cè)試條件為真-d文件名若文件存在并且是目錄文件,則測(cè)試條件為真-p文件名若文件存在并且是命名的FIFO文件,則測(cè)試條件為真-b文件名若文件存在并且是塊設(shè)備文件,則測(cè)試條件為真-c文件名若文件存在并且是字符設(shè)備文件,則測(cè)試條件為真-s文件名若文件存在并且文件長(zhǎng)度大于0,則測(cè)試條件為真-t文件描述字如果文件被打開(kāi)其文件描述字是與終端設(shè)備相關(guān)的,則測(cè)試條件為真第四十七頁(yè),共七十九頁(yè),2022年,8月28日47Linux

shell程序設(shè)計(jì)(2)有關(guān)字符串方面的測(cè)試參數(shù)功能-zs1如果字符串s1的長(zhǎng)度為0,則測(cè)試條件為真-ns1如果字符串s1的長(zhǎng)度大于0,則測(cè)試條件為真s1如果字符串s1不是空字符串,則測(cè)試條件為真s1=s2如果s1等于s2,則測(cè)試條件為真s1?。絪2如果s1不等于s2,則測(cè)試條件為真s1<s2如果按字典順序s1在s2之前,則測(cè)試條件為真s1>s2如果按字典順序s1在s2之后,則測(cè)試條件為真第四十八頁(yè),共七十九頁(yè),2022年,8月28日48Linux

shell程序設(shè)計(jì)(3)有關(guān)數(shù)值方面的測(cè)試參數(shù)功能n1–eqn2如果整數(shù)n1等于n2,則測(cè)試條件為真n1–nen2如果整數(shù)n1不等于n2,則測(cè)試條件為真n1–ltn2如果整數(shù)n1小于n2,則測(cè)試條件為真n1–len2如果整數(shù)n1小于或等于n2,則測(cè)試條件為真n1–gtn2如果整數(shù)n1大于n2,則測(cè)試條件為真n1–gen2如果整數(shù)n1大于或等于n2,則測(cè)試條件為真第四十九頁(yè),共七十九頁(yè),2022年,8月28日49Linux

shell程序設(shè)計(jì)(4)邏輯運(yùn)算符參數(shù)功能!放在任意邏輯表達(dá)式之前,使原來(lái)的表達(dá)式變?yōu)榧?a放在兩個(gè)邏輯表達(dá)式之間,當(dāng)兩個(gè)表達(dá)式為真時(shí),結(jié)果為真-o放在兩個(gè)邏輯表達(dá)式之間,其中只要一個(gè)表達(dá)式為真時(shí),結(jié)果就為真()把一個(gè)邏輯表達(dá)式括起來(lái),使其優(yōu)先得到運(yùn)算第五十頁(yè),共七十九頁(yè),2022年,8月28日50Linux

shell程序設(shè)計(jì)(5)特殊條件測(cè)試:表示不作任何事情,退出值為0ture表示總為真,退出值總是0false表示總為假,退出值總是255第五十一頁(yè),共七十九頁(yè),2022年,8月28日51Linux

shell程序設(shè)計(jì)☆case語(yǔ)句,一般語(yǔ)法形式為case字符串in

模式字符串1)命令

命令;;模式字符串2)命令…

命令;;…模式字符串n)命令…

命令;;esac執(zhí)行過(guò)程如下:用字符串依次同各模式字符串進(jìn)行比較,如果發(fā)現(xiàn)某一個(gè)匹配,那就執(zhí)行該模式字符串之后的命令,直至遇到兩個(gè)分號(hào)為止;如果沒(méi)有任何模式字符串與該字符串的值相符合,則不執(zhí)行任何命令注意:(1)每個(gè)模式字符串后面可有一條或多條命令,其最后一條命令必須用兩個(gè)分號(hào)結(jié)束;(2)模式字符串中可以使用通配符;(3)如果模式字符串中包含多個(gè)模式,那么各模式之間應(yīng)以豎線(xiàn)(|)隔開(kāi),表示各模式是或的關(guān)系;(4)各模式字符串應(yīng)是唯一的,不重復(fù)出現(xiàn);(5)要以case開(kāi)頭以esac結(jié)束;(6)case的返回值是整個(gè)結(jié)構(gòu)中最后執(zhí)行的那個(gè)命令的退出值,若沒(méi)有執(zhí)行任何命令,則返回值為0第五十二頁(yè),共七十九頁(yè),2022年,8月28日52Linux

shell程序設(shè)計(jì)☆while語(yǔ)句一般語(yǔ)法形式為:while測(cè)試條件do

命令表done執(zhí)行過(guò)程如下:先進(jìn)行條件測(cè)試,如果結(jié)果為真則進(jìn)入循環(huán)體,執(zhí)行其中的命令;然后再作條件測(cè)試……,直至測(cè)試條件為假才終止while語(yǔ)句的執(zhí)行。第五十三頁(yè),共七十九頁(yè),2022年,8月28日53Linux

shell程序設(shè)計(jì)☆until語(yǔ)句一般語(yǔ)法形式如下:until測(cè)試條件do

命令表done執(zhí)行過(guò)程如下:測(cè)試條件為假時(shí)進(jìn)入循環(huán)體,直至測(cè)試條件為真時(shí)終止循序第五十四頁(yè),共七十九頁(yè),2022年,8月28日54Linux

shell程序設(shè)計(jì)for變量in值表do

命令表done執(zhí)行過(guò)程如下:變量依次取值表里的各個(gè)值,然后執(zhí)行命令表☆for語(yǔ)法一般語(yǔ)法主要有三種,(1)格式一:第五十五頁(yè),共七十九頁(yè),2022年,8月28日55Linux

shell程序設(shè)計(jì)例:fordayinMondayWednesdayFridaySundaydoecho$daydone執(zhí)行過(guò)程如下:變量day依次取值表里的各個(gè)值,第一次將Monday賦給day,然后執(zhí)行命令“echo$day”;第二次將Wednesday賦給day……☆for語(yǔ)法一般語(yǔ)法主要有三種,(1)格式一:第五十六頁(yè),共七十九頁(yè),2022年,8月28日56Linux

shell程序設(shè)計(jì)for變量in文件正則表達(dá)式do

命令表done執(zhí)行過(guò)程如下:取當(dāng)前目錄下與正則表達(dá)式相匹配的文件名,每取值依次就進(jìn)入循環(huán)體執(zhí)行命令表一次☆for語(yǔ)法一般語(yǔ)法主要有三種(2)格式二:第五十七頁(yè),共七十九頁(yè),2022年,8月28日57Linux

shell程序設(shè)計(jì)例:forfileinm*.cdocat$file|prdone執(zhí)行過(guò)程如下:將當(dāng)前目錄下所有以m開(kāi)頭的C程序文件按分頁(yè)格式顯示出來(lái)☆for語(yǔ)法一般語(yǔ)法主要有三種(2)格式二:第五十八頁(yè),共七十九頁(yè),2022年,8月28日58Linux

shell程序設(shè)計(jì)foriin$*do

命令表doneforido或者命令表done☆for語(yǔ)法一般語(yǔ)法主要有三種(3)格式三:執(zhí)行過(guò)程如下:變量i依次取位置參數(shù)的值,然后執(zhí)行循環(huán)體中的命令表,直至所有位置參數(shù)取完為止第五十九頁(yè),共七十九頁(yè),2022年,8月28日59Linux

shell程序設(shè)計(jì)☆位置參數(shù):執(zhí)行UNIX/Linux命令或Shell腳本時(shí),Shell傳遞給腳本的參數(shù),例:bashex1/home/l1ex15ex16ex17——實(shí)參$0$1$2$3$4注意:$0始終對(duì)應(yīng)腳本名,不能為空;其他位置變量的值可以為空串——位置參數(shù)第六十頁(yè),共七十九頁(yè),2022年,8月28日60Linux

shell程序設(shè)計(jì)例:bashex1/home/l1ex15ex16ex17$0$1$2$3$4注意:shift——移動(dòng)位置命令,每執(zhí)行一次,實(shí)參就左移一位,相當(dāng)于位置參數(shù)右移一位☆位置參數(shù):執(zhí)行UNIX/Linux命令或Shell腳本時(shí),Shell傳遞給腳本的參數(shù),第六十一頁(yè),共七十九頁(yè),2022年,8月28日61Linux

shell程序設(shè)計(jì)例:命令行:bashex7ABCDEF$0$1$2$3$4shift后位置參數(shù)原位置:參數(shù)$5$6$0$1$2$3$4$5第六十二頁(yè),共七十九頁(yè),2022年,8月28日62Linux

shell程序設(shè)計(jì)請(qǐng)解釋下列程序并給出最終結(jié)果#ex8echo$0$1$2$3$4$5$6$7$8$9shiftecho$0$1$2$3$4$5$6$7$8$9shift4echo$0$1$2$3$4$5$6$7$8$9$bashex8ABCDEFGHIJK第六十三頁(yè),共七十九頁(yè),2022年,8月28日63Linux

shell程序設(shè)計(jì)最終結(jié)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論