![第11章Shell的使用_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/9b6d5e05-d51f-46e0-803d-b7f8f896fe8f/9b6d5e05-d51f-46e0-803d-b7f8f896fe8f1.gif)
![第11章Shell的使用_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/9b6d5e05-d51f-46e0-803d-b7f8f896fe8f/9b6d5e05-d51f-46e0-803d-b7f8f896fe8f2.gif)
![第11章Shell的使用_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/9b6d5e05-d51f-46e0-803d-b7f8f896fe8f/9b6d5e05-d51f-46e0-803d-b7f8f896fe8f3.gif)
![第11章Shell的使用_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/9b6d5e05-d51f-46e0-803d-b7f8f896fe8f/9b6d5e05-d51f-46e0-803d-b7f8f896fe8f4.gif)
![第11章Shell的使用_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/5/9b6d5e05-d51f-46e0-803d-b7f8f896fe8f/9b6d5e05-d51f-46e0-803d-b7f8f896fe8f5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第11章 Shell的使用對于學習過對于學習過DOS命令的人都知道從命令行輸入命令。每次命令的人都知道從命令行輸入命令。每次輸入一個命令,可得到系統(tǒng)的響應。但是有時間需要一下子連輸入一個命令,可得到系統(tǒng)的響應。但是有時間需要一下子連續(xù)執(zhí)行好幾個命令,才能得到最后的結果。然后在續(xù)執(zhí)行好幾個命令,才能得到最后的結果。然后在linux環(huán)境中環(huán)境中,大家可以利用,大家可以利用shell程序或程序或shell腳本來實現(xiàn)這一目的。腳本來實現(xiàn)這一目的。Shell程序是通過文本編輯程序放在一個文件中的一系列程序是通過文本編輯程序放在一個文件中的一系列Linux命令命令和實用程序。當和實用程序。當shell在執(zhí)
2、行在執(zhí)行shell程序時,程序時,Linux系統(tǒng)會非常自系統(tǒng)會非常自然的一個接一個地解釋和執(zhí)行輸入的每一個命令。然的一個接一個地解釋和執(zhí)行輸入的每一個命令。Shell就是為就是為了在終端運行程序,是操作系統(tǒng)的一部分,用來與用戶打交道了在終端運行程序,是操作系統(tǒng)的一部分,用來與用戶打交道,并且可以用來協(xié)調各個命令。,并且可以用來協(xié)調各個命令。可以像在可以像在Linux下執(zhí)行任何其他命令一樣編寫并執(zhí)行下執(zhí)行任何其他命令一樣編寫并執(zhí)行shell程序??梢栽诔绦???梢栽趕hell程序內執(zhí)行其它的程序內執(zhí)行其它的shell程序,只要這些程序,只要這些shell程序在查找路徑中。程序在查找路徑中。shel
3、l程序跟其他任何高級語言一樣程序跟其他任何高級語言一樣,具有其自己的語法特點。例如定義變量、條件語句、循環(huán)特,具有其自己的語法特點。例如定義變量、條件語句、循環(huán)特點等。本章將討論這些內容。點等。本章將討論這些內容。11.1 創(chuàng)建和執(zhí)行創(chuàng)建和執(zhí)行shell程序程序 學習腳本編程的目的是實現(xiàn)在有些場合用一個命令來學習腳本編程的目的是實現(xiàn)在有些場合用一個命令來實現(xiàn)一些常用的命令集或者處理某些特定的問題,避免多次實現(xiàn)一些常用的命令集或者處理某些特定的問題,避免多次輸入同一命令集的麻煩。對于不同的輸入同一命令集的麻煩。對于不同的shell程序而言,其編程序而言,其編程語法也有所不同。常見的程語法也有所不
4、同。常見的shell腳本是腳本是bash和和tcsh,其命,其命令和語法與令和語法與C語言類似。語言類似。Shell腳本編程的準備工具為文本編輯器(腳本編程的準備工具為文本編輯器(vi、vim、gedit等)、腳本解釋程序(等)、腳本解釋程序(bash、tcsh等)、其他工具(等)、其他工具(用來擴充用來擴充Shell 腳本的功能,如:腳本的功能,如:grep、wc等)。等)。shell腳腳本是指使用用戶環(huán)境本是指使用用戶環(huán)境shell提供的語句所編寫的提供的語句所編寫的Linux命令文命令文件。可以利用文字編輯器進行程序錄入和編輯加工來建立件??梢岳梦淖志庉嬈鬟M行程序錄入和編輯加工來建立s
5、hell程序,與建立普通文本文件的方式相同。程序,與建立普通文本文件的方式相同。 接下來將舉例介紹其創(chuàng)建與執(zhí)行。接下來將舉例介紹其創(chuàng)建與執(zhí)行。(1)在)在bash環(huán)境下創(chuàng)建一個環(huán)境下創(chuàng)建一個shell別名文件,命名為別名文件,命名為example。用文本編輯器編輯其文件內容如下:。用文本編輯器編輯其文件內容如下:alias search=whereisalias dir=lsalias copy=cp(2)Linux下可以使用多種方法來執(zhí)行下可以使用多種方法來執(zhí)行shell程序。程序。#chmod+x byname /使用使用chmod命令來執(zhí)行。命令來執(zhí)行。#echo $PATH /查找路徑
6、命令。查找路徑命令。在不同的環(huán)境中,執(zhí)行在不同的環(huán)境中,執(zhí)行shell腳本的命令是不一樣。例腳本的命令是不一樣。例如,還可以從命令行上執(zhí)行如下表:如,還可以從命令行上執(zhí)行如下表:11.2 變量Linux下的下的shell編程已經是一種非常成熟的編程語言。編程已經是一種非常成熟的編程語言。其支持各種類型的變量,共有其支持各種類型的變量,共有3種主要的變量類型:種主要的變量類型:環(huán)境變量:用戶不必去定義環(huán)境變量,就可以直接在環(huán)境變量:用戶不必去定義環(huán)境變量,就可以直接在shell程序中使用。因為其為系統(tǒng)環(huán)境的一部分,由系統(tǒng)創(chuàng)程序中使用。因為其為系統(tǒng)環(huán)境的一部分,由系統(tǒng)創(chuàng)建和賦值。某些變量還能在建和
7、賦值。某些變量還能在shell程序中進行修改,例如,程序中進行修改,例如,用戶可以通過相應的環(huán)境變量來改變系統(tǒng)默認的命令提示符用戶可以通過相應的環(huán)境變量來改變系統(tǒng)默認的命令提示符形式;形式;內部變量:由系統(tǒng)提供。與環(huán)境變量不同,其不能被內部變量:由系統(tǒng)提供。與環(huán)境變量不同,其不能被用戶修改;用戶修改;用戶變量:在編寫用戶變量:在編寫shell過程中由用戶定義的??梢栽谶^程中由用戶定義的??梢栽趕hell程序內任意使用和修改。這種變量只對用戶有意義,程序內任意使用和修改。這種變量只對用戶有意義,不會對系統(tǒng)產生影響;不會對系統(tǒng)產生影響;shell編程和其他編程的主要區(qū)別是編程和其他編程的主要區(qū)別是
8、shell編程中的變量編程中的變量是非類型性質的。是非類型性質的。11.2.1 給變量賦值給變量賦值 在編程過程中,需要對其進行賦值才能實現(xiàn)變量的真在編程過程中,需要對其進行賦值才能實現(xiàn)變量的真正價值,在正價值,在shell編程中也不例外。編程中也不例外。 注意:在注意:在pdksh和和bash環(huán)境下,必須確保在等號(環(huán)境下,必須確保在等號()前后沒有空格。)前后沒有空格。shell編程語言中使用的變量為非類型性質的變量。同編程語言中使用的變量為非類型性質的變量。同一變量在同一程序中被賦值成不同類型來使用是可能的。例一變量在同一程序中被賦值成不同類型來使用是可能的。例如,一個變量可以一次用來存
9、放數(shù)值類型另一次存放字符串如,一個變量可以一次用來存放數(shù)值類型另一次存放字符串。但是,應該注意盡量避免這樣做。但是,應該注意盡量避免這樣做。 如果字符串中不含空格,就可以通過上述命令實現(xiàn)。如果字符串中不含空格,就可以通過上述命令實現(xiàn)。但是,如果字符串中包含有空格話,就要對申明的字符串用但是,如果字符串中包含有空格話,就要對申明的字符串用單引號擴起來??梢酝ㄟ^如下語句對字符串變量進行賦值:單引號擴起來??梢酝ㄟ^如下語句對字符串變量進行賦值:11.2.2 訪問變量在在shell程序中要訪問變量,可以通過變量名前加程序中要訪問變量,可以通過變量名前加“$”(美元符)的形式來訪問變量的值。例如,有個變
10、量(美元符)的形式來訪問變量的值。例如,有個變量var,通過通過$var的形式就可以對這個變量進行訪問了。還可以把變的形式就可以對這個變量進行訪問了。還可以把變量量var的值賦給變量的值賦給變量counter。實現(xiàn)變量間的值傳遞可以通過。實現(xiàn)變量間的值傳遞可以通過如下命令:如下命令:表11.5 訪問變量命令環(huán)境counter$varPdksh和bashset counter$vartcsh11.3 位置參數(shù)位置參數(shù)是位置參數(shù)是Shell程序的一種變量,由被調用的命令行程序的一種變量,由被調用的命令行中的各自的位置決定。位置參數(shù)之間應用空格分開,通常是中的各自的位置決定。位置參數(shù)之間應用空格分開
11、,通常是跟在程序名后面的參數(shù)。跟在程序名后面的參數(shù)。Shell取第一個位置參數(shù)替換程序取第一個位置參數(shù)替換程序文件中的文件中的$1,第二個替換,第二個替換$2,依次類推。,依次類推。$0是一個特殊的是一個特殊的變量,其內容是當前這個變量,其內容是當前這個Shell程序的文件名,因此,程序的文件名,因此,$0不不是一個位置參數(shù),在顯示當前所有的位置參數(shù)時是不包括是一個位置參數(shù),在顯示當前所有的位置參數(shù)時是不包括$0的。的。例如,例如,shell程序程序myname要求兩個參數(shù)(如名和姓)要求兩個參數(shù)(如名和姓),可以只用一個參數(shù),可以只用一個參數(shù)(名名)來調用來調用shell程序。但是,你不能只
12、程序。但是,你不能只利用第二個參數(shù)利用第二個參數(shù)(姓姓)來調用來調用shell程序。這里有一個程序。這里有一個shell程程序序myname,只帶了一個參數(shù),只帶了一個參數(shù)(名字名字),并在屏幕上顯示這個,并在屏幕上顯示這個名字:名字:(1)編寫)編寫shell代碼。代碼。#Name display programIf($# -eq 0)ThenEcho “Name not provided”ElseEcho “Your name is ”$1(2)執(zhí)行)執(zhí)行myname,將得到輸出結果為,將得到輸出結果為Name not provided。# . myname(3)執(zhí)行)執(zhí)行mypgm1。#
13、 . myname windy(4)得到正確輸出結果。)得到正確輸出結果。Your name is windyshell程序程序myname還說明了還說明了she11編程的另一個方面,即內部變量編程的另一個方面,即內部變量。在。在myname中的變量中的變量$ #是內部變量,并提供傳送給是內部變量,并提供傳送給shell程序的位置參程序的位置參數(shù)的數(shù)目。數(shù)的數(shù)目。 11.4 內部變量內部變量是內部變量是Linux系統(tǒng)提供的一種用于作出判定的特殊類型的變量系統(tǒng)提供的一種用于作出判定的特殊類型的變量。在。在shell程序內用戶時不能修改的這些變量的。下面是一些常用到的部程序內用戶時不能修改的這些變
14、量的。下面是一些常用到的部分內部變量:分內部變量:$ #:傳送給:傳送給shell程序的位置參數(shù)的數(shù)目。程序的位置參數(shù)的數(shù)目。$?:最后命令的完成碼或在?:最后命令的完成碼或在shell程序內所執(zhí)行的程序內所執(zhí)行的shell程序。程序。$ 0:shell程序的名稱。程序的名稱。$ *:調用:調用shell程序時所傳送的全部變元的單字符串。程序時所傳送的全部變元的單字符串。為了表明這些內部變量的用法,這里有一個為了表明這些內部變量的用法,這里有一個myname的示范例子:的示范例子:(1)編寫代碼過程。)編寫代碼過程。#my =2#na=mypag2#nu=james#echo “Number
15、of parameters is ” $my#echo “Program name is ” $na#echo “Paramerts as a single string is ”$nu(2)執(zhí)行)執(zhí)行myname示例。示例。# . mypgm2 Sanjiv Guha(3)輸出結果顯示。)輸出結果顯示。Number of parameters is 2Program name is mypgm2Parameters as a single string is james11.5 特殊字符在在Linux shell程序中對某些特殊字符規(guī)定了特殊的含程序中對某些特殊字符規(guī)定了特殊的含義。在程序中
16、對其進行使用時,一般不要將其作為變量名或義。在程序中對其進行使用時,一般不要將其作為變量名或字符串的一部分。因為這樣往往會導致程序出錯。如果用戶字符串的一部分。因為這樣往往會導致程序出錯。如果用戶一定要在某些字符串中含有這類特殊字符的話,必須利用轉一定要在某些字符串中含有這類特殊字符的話,必須利用轉義字符反斜杠(義字符反斜杠()來實現(xiàn)。表明在此處該特殊字符不作為)來實現(xiàn)。表明在此處該特殊字符不作為特殊字符來處理。在下表中介紹了部分特殊字符極其特殊含特殊字符來處理。在下表中介紹了部分特殊字符極其特殊含義:義:11.5.1 雙引號當字符串中含有空格時,應該用雙引號(當字符串中含有空格時,應該用雙引
17、號(“)括起來)括起來。這樣做的目的是為了讓。這樣做的目的是為了讓shell將其作為一個整體來解釋該將其作為一個整體來解釋該字符串。字符串。 雙引號還會按照要求來解析字符串內的所有變量。下雙引號還會按照要求來解析字符串內的所有變量。下面是兩個不同的示例過程:面是兩個不同的示例過程:(1)pdksh和和bash環(huán)境下的編寫過程。環(huán)境下的編寫過程。string=hello wordnewstring=The value of string is $stringecho $newstring(2)tcsh環(huán)境下的編寫過程。環(huán)境下的編寫過程。set string=hello wordset newst
18、ring=The value of string is $stringecho $newstring(3)兩個例子的結果都為如下輸出。)兩個例子的結果都為如下輸出。The value of string is hello word11.5.2 單引號單引號 用單引號(用單引號()將字符串括起來的目的是阻止)將字符串括起來的目的是阻止shlle對該對該字符串中的變量進行解析。下面將上節(jié)例子中的雙引號改為字符串中的變量進行解析。下面將上節(jié)例子中的雙引號改為單引號為例來對比說明以使讀者加深理解。單引號為例來對比說明以使讀者加深理解。(1)pdksh和和bash環(huán)境中。環(huán)境中。string=hello
19、 wordnewstring=The value of string is $stringecho $newstring(2)tcsh環(huán)境中。環(huán)境中。set string=hello wordset newstring=The value of string is $stringecho $newstring(3)兩個例子的結果都為如下輸出。)兩個例子的結果都為如下輸出。The value of string is $string通過上述例子可發(fā)現(xiàn)變量通過上述例子可發(fā)現(xiàn)變量string沒有被沒有被shell解析。解析。11.5.3 反斜杠在特殊字符前加上反斜杠(在特殊字符前加上反斜杠()可以阻
20、止)可以阻止shell將該字符將該字符解釋為特殊字符。例如,要將解釋為特殊字符。例如,要將$hello值賦給名為值賦給名為str的變量。的變量。如果直接賦值的話,如果直接賦值的話,shell將會把將會把“$hello”解析為變量解析為變量hello的值。那么如果程序中沒有定義名為的值。那么如果程序中沒有定義名為hello變量的話,存放變量的話,存放在變量在變量str中的值將是一個空值。而并不能達到預期的賦值中的值將是一個空值。而并不能達到預期的賦值目的。目的。 11.5.4 反引號反引號(反引號()用來通知)用來通知shell執(zhí)行由反引號所定義的字符執(zhí)行由反引號所定義的字符串。在串。在shel
21、l程序中,其可以將括起來的命令執(zhí)行后的結果程序中,其可以將括起來的命令執(zhí)行后的結果存放在定義的變量中。例如,當前目錄下有個名為存放在定義的變量中。例如,當前目錄下有個名為text.txt的文本文件,要對其中的字數(shù)進行統(tǒng)計并將結果存放在變量的文本文件,要對其中的字數(shù)進行統(tǒng)計并將結果存放在變量num中。編寫如下內容:中。編寫如下內容:#count how many chars in the text.txtnum=wc -w text.txtecho “There are $num chars in the text.txt.”11.6 表達式的比較執(zhí)行兩種操作符(數(shù)字或字符串)的邏輯比較是稍有執(zhí)
22、行兩種操作符(數(shù)字或字符串)的邏輯比較是稍有不同的,這取決于處在哪個不同的,這取決于處在哪個shell中。在中。在pdksh和和bash中,中,有一個叫做有一個叫做test的命令可以用來完成表達式的比較。在的命令可以用來完成表達式的比較。在tcsh中,可以編寫一個表達式來完成同樣的比較。中,可以編寫一個表達式來完成同樣的比較。pdksh和和bash環(huán)境下對環(huán)境下對test命令的處理是相同的。下命令的處理是相同的。下面來介紹一下面來介紹一下test命令支持的比較類型:命令支持的比較類型:(1)字符串比較,主要用來比較兩個字符串的表達式)字符串比較,主要用來比較兩個字符串的表達式的操作符。的操作符
23、。=:比較兩個字符串是否相等。:比較兩個字符串是否相等。!=:比較兩個字符串是否不相等。:比較兩個字符串是否不相等。-n:判定字符串的長度是否大于零。:判定字符串的長度是否大于零。-z:判定字符串長度是否等于零。:判定字符串長度是否等于零。 (2)數(shù)字比較,下面這些操作符可用于對兩個數(shù)字間)數(shù)字比較,下面這些操作符可用于對兩個數(shù)字間的比較。的比較。-eq:比較兩個數(shù)是否相等。:比較兩個數(shù)是否相等。-ge:比較一個數(shù)是否大于或等于另一個數(shù)。:比較一個數(shù)是否大于或等于另一個數(shù)。-le:也比較一個數(shù)是否小于或等于另一個數(shù)。:也比較一個數(shù)是否小于或等于另一個數(shù)。-ne:比較兩個數(shù)是否不等。:比較兩個數(shù)
24、是否不等。-gt:比較一個數(shù)是否大于另一個數(shù)。:比較一個數(shù)是否大于另一個數(shù)。-lt:比較一個數(shù)是否小于另一個數(shù)。:比較一個數(shù)是否小于另一個數(shù)。(3)文件操作符,下面這些操作符可用于文件的比較)文件操作符,下面這些操作符可用于文件的比較。-d:確定文件是否為目錄。:確定文件是否為目錄。-f:確定文件是否為普通文件。:確定文件是否為普通文件。-r:確定對文件是否設置讀許可。:確定對文件是否設置讀許可。-s:確定文件名是否具有大于零的長度。:確定文件名是否具有大于零的長度。-w:確定對文件是否設置寫許可。:確定對文件是否設置寫許可。-x:確定對文件是否設置執(zhí)行許可。:確定對文件是否設置執(zhí)行許可。11
25、.7 循環(huán)語句循環(huán)語句是用來對循環(huán)語句內包含的一系列命令重復循環(huán)語句是用來對循環(huán)語句內包含的一系列命令重復執(zhí)行多次。通常應用于比較復雜的計算之中,往往通過循環(huán)執(zhí)行多次。通常應用于比較復雜的計算之中,往往通過循環(huán)語句把一個復雜化的問題變得簡單易操作。因此其是一個用語句把一個復雜化的問題變得簡單易操作。因此其是一個用于提高效率的語句。在本章將對其主要類型進行介紹。于提高效率的語句。在本章將對其主要類型進行介紹。11.7.1 for語句(1)for語句實現(xiàn)循環(huán)的一種格式。語句實現(xiàn)循環(huán)的一種格式。for (expression1;expression2;expression3)dostatements
26、Done(2)for語句實現(xiàn)循環(huán)的另一種格式:語句實現(xiàn)循環(huán)的另一種格式:for indostatementsdone11.7.2 while循環(huán)語句當指定的條件為真時,當指定的條件為真時,while語句會循環(huán)執(zhí)行循環(huán)體內語句會循環(huán)執(zhí)行循環(huán)體內的命令。一旦所指定的條件為假時,則立即終止循環(huán)。如果的命令。一旦所指定的條件為假時,則立即終止循環(huán)。如果所指定的條件一開始就被判定為假,則一次都不執(zhí)行循環(huán)。所指定的條件一開始就被判定為假,則一次都不執(zhí)行循環(huán)。在使用在使用while語句時,若所指定的條件永不為假,則循環(huán)就語句時,若所指定的條件永不為假,則循環(huán)就永不終止。讀者在編寫永不終止。讀者在編寫shel
27、l程序時應注意這個問題,避免程序時應注意這個問題,避免產生死循環(huán)現(xiàn)象。產生死循環(huán)現(xiàn)象。(1)while語句在語句在pdksh和和bash環(huán)境中使用格式。環(huán)境中使用格式。while do statementsdone11.7.3 until語句until語句會根據(jù)指定的條件循環(huán)執(zhí)行循環(huán)體中的命令語句會根據(jù)指定的條件循環(huán)執(zhí)行循環(huán)體中的命令,直到所指定的條件判定為真則終止循環(huán)。,直到所指定的條件判定為真則終止循環(huán)。until語句在語句在pdksh和和bash環(huán)境中的格式如下:環(huán)境中的格式如下:until dostatementsdoneuntil語句類似于語句類似于while語句。只是其為當判定條件
28、為真語句。只是其為當判定條件為真時,才終止循環(huán)。讀者可參照時,才終止循環(huán)。讀者可參照while語句的用法,這里就不語句的用法,這里就不做過多的介紹。做過多的介紹。11.7.4 repeat語句repeat語句用于重復執(zhí)行規(guī)定次命令。例如,要連續(xù)語句用于重復執(zhí)行規(guī)定次命令。例如,要連續(xù)顯示數(shù)字顯示數(shù)字“repeat”8次可以執(zhí)行如下:次可以執(zhí)行如下:repeat 8 echo repeat11.7.5 select語句 當編寫一個需要聯(lián)機輸入的當編寫一個需要聯(lián)機輸入的shell程序時,程序時,select語句語句就可用來生成一個菜單列表。其格式如下:就可用來生成一個菜單列表。其格式如下:sele
29、ct in dostatementsdone其中其中itemlist為可選。當編寫者未給出為可選。當編寫者未給出itemlist時,系時,系統(tǒng)將通過統(tǒng)將通過item中的項每次重復一個。當給出中的項每次重復一個。當給出temlist時,系時,系統(tǒng)會將統(tǒng)會將itemlist列表中的當前值賦給列表中的當前值賦給item,這樣,這樣item就可用就可用作為所執(zhí)行語句的一部分。作為所執(zhí)行語句的一部分。11.7.6 shift語句shift語句用來處理位置參數(shù)并從左到右依次處理一個語句用來處理位置參數(shù)并從左到右依次處理一個參數(shù)。位置參數(shù)是用參數(shù)。位置參數(shù)是用$1、$2、$3等來標識的。等來標識的。shif
30、t命令的命令的作用就是將每個位置參數(shù)向左移動一個位置使當前的參數(shù)丟作用就是將每個位置參數(shù)向左移動一個位置使當前的參數(shù)丟失。失。Shift語句的格式如下:語句的格式如下:shift num參數(shù)參數(shù)num是可選的,用于指定移動的次數(shù)。其缺省值是可選的,用于指定移動的次數(shù)。其缺省值為為1,即參數(shù)向左移動一個位置。若指定了這個參數(shù)則系統(tǒng),即參數(shù)向左移動一個位置。若指定了這個參數(shù)則系統(tǒng)將使位置參數(shù)向左移動將使位置參數(shù)向左移動num個位子。在個位子。在shell程序中,程序中,shift命令用于使用戶能夠在程序中傳送不同的選項。命令用于使用戶能夠在程序中傳送不同的選項。11.8 條件語句shell程序中所
31、利用的條件語句是根據(jù)所指定的條件來程序中所利用的條件語句是根據(jù)所指定的條件來確定執(zhí)行程序的哪個部分。通俗的說就是當處理一件事情時確定執(zhí)行程序的哪個部分。通俗的說就是當處理一件事情時,有多種可處理的方法,但是只能從可選擇處理方法中選取,有多種可處理的方法,但是只能從可選擇處理方法中選取一種作為最佳的方案。一種作為最佳的方案。11.8.1 if語句if語句根據(jù)判定邏輯表達式來作出選擇。其語法與語句根據(jù)判定邏輯表達式來作出選擇。其語法與C語言中語言中的,的,if語句用法基本相同。在語句用法基本相同。在pdksh和和bash環(huán)境中,此語句最基環(huán)境中,此語句最基本的格式如下:本的格式如下:if then
32、 statements1else statements2fi上述表達式中,參數(shù)概念如下:上述表達式中,參數(shù)概念如下:為一個條件表達式,是一個邏輯值。為一個條件表達式,是一個邏輯值。Statements1、statements2都為執(zhí)行語句部分,由若干個都為執(zhí)行語句部分,由若干個命令組成。命令組成。當當判定為真時,則執(zhí)行判定為真時,則執(zhí)行statements1,然后結,然后結束束if語句并繼續(xù)執(zhí)行語句并繼續(xù)執(zhí)行if后面的語句。后面的語句。當當判定為假時,則執(zhí)行判定為假時,則執(zhí)行statements1,然后結,然后結束束if語句并繼續(xù)執(zhí)行語句并繼續(xù)執(zhí)行if后面的語句。后面的語句。11.8.2 ca
33、se語句當當if語句的出口分支比較多的時候,程序的可讀性就會大大語句的出口分支比較多的時候,程序的可讀性就會大大下降。為了提高可讀性,就可以使用下降。為了提高可讀性,就可以使用case語句來實現(xiàn)。語句來實現(xiàn)。(1)pdksh和和bash環(huán)境下,環(huán)境下,case語句格式。語句格式。case instring1) statements1;string2) statements2;*)statements;Esac11.9 跳轉語句通過前面的學習,大家應該知道了通過前面的學習,大家應該知道了shell的基本編寫方的基本編寫方法。順序,選擇,循還的使用,在此還有另外的兩個特殊語法。順序,選擇,循還的使
34、用,在此還有另外的兩個特殊語句要講:句要講:break語句。語句。break語句可以用來終止重復執(zhí)行的循環(huán)。這種循環(huán)可語句可以用來終止重復執(zhí)行的循環(huán)。這種循環(huán)可以是以是for、until或或repeat命令。命令。 exit語句。語句。exit語句可以用來在執(zhí)行語句可以用來在執(zhí)行shell程序時退出程序。在程序時退出程序。在exit之后可有選擇地利用一個數(shù)字。其放置的位置和之后可有選擇地利用一個數(shù)字。其放置的位置和break相似相似,這里就不做過多的介紹。如果當前的,這里就不做過多的介紹。如果當前的shell程序被另一個程序被另一個shell程序調用,那么這個調用程序將檢查代碼并作出相應程序調
35、用,那么這個調用程序將檢查代碼并作出相應的判定。的判定。11.10 函數(shù)和其他編程語言一樣,和其他編程語言一樣,shell程序也支持函數(shù)。函數(shù)是程序也支持函數(shù)。函數(shù)是shell程序中執(zhí)行特殊過程的部件,并在程序中執(zhí)行特殊過程的部件,并在shell程序中可以被程序中可以被重復調用。編寫函數(shù)將有助于使重復調用。編寫函數(shù)將有助于使shell程序更加簡潔易懂。程序更加簡潔易懂。(1)pdksh和和bash環(huán)境中函數(shù)格式定義。環(huán)境中函數(shù)格式定義。func()statements(2)調用函數(shù)的格式。)調用函數(shù)的格式。func param1 param2 param3說明:參數(shù)說明:參數(shù)param1、param2等為可選。還能把參數(shù)等為可選。還能把參數(shù)作為單字符串來傳送,例如作為單字符串來傳送,例如$。函數(shù)可解析參數(shù),就如同。函數(shù)可解析參數(shù),就如同其傳送給其傳送給shell程序的位置參數(shù)一樣。程序的位置參數(shù)一樣。11.11 小 結在本章中,學習了如何編寫在本章中,學習了如何編寫shell程序,程序,shell程序可以用來編寫執(zhí)行簡單任務的程序可以用來編寫執(zhí)行簡單任務的程序。例如進入系統(tǒng)時設
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年散打頭盔行業(yè)深度研究分析報告
- 2025-2030年數(shù)學思維玩具企業(yè)制定與實施新質生產力戰(zhàn)略研究報告
- 2025-2030年掌上藝術史學習APP行業(yè)深度調研及發(fā)展戰(zhàn)略咨詢報告
- 2025年中國中端酒店行業(yè)發(fā)展趨勢預測及投資戰(zhàn)略研究報告
- 代理材料合同范本模板
- 2025-2030年數(shù)控機床遠程故障診斷企業(yè)制定與實施新質生產力戰(zhàn)略研究報告
- 公司委托消防責任合同范例
- 動遷房合同范本
- 代銷供貨合同范本
- 兔毛絨行業(yè)深度研究報告
- -情景交際-中考英語復習考點
- 安全隱患報告和舉報獎勵制度
- 地理標志培訓課件
- 2023行政主管年終工作報告五篇
- 印刷公司生產部2025年年度工作總結及2025年工作計劃
- GA/T 1003-2024銀行自助服務亭技術規(guī)范
- 公園衛(wèi)生保潔考核表
- 2024年居間完整協(xié)議書居間完整協(xié)議書
- 《化妝知識講座》課件
- 川教版四年級《生命.生態(tài).安全》下冊全冊 課件
- 體育-水平二-三年級籃球大單元教學計劃表及原地運球教學設計、教案
評論
0/150
提交評論