Linux網(wǎng)絡(luò)操作系統(tǒng)項目教程(歐拉-麒麟)課件 (含思政)項目7、8 shell基礎(chǔ)、學(xué)習(xí)shell script_第1頁
Linux網(wǎng)絡(luò)操作系統(tǒng)項目教程(歐拉-麒麟)課件 (含思政)項目7、8 shell基礎(chǔ)、學(xué)習(xí)shell script_第2頁
Linux網(wǎng)絡(luò)操作系統(tǒng)項目教程(歐拉-麒麟)課件 (含思政)項目7、8 shell基礎(chǔ)、學(xué)習(xí)shell script_第3頁
Linux網(wǎng)絡(luò)操作系統(tǒng)項目教程(歐拉-麒麟)課件 (含思政)項目7、8 shell基礎(chǔ)、學(xué)習(xí)shell script_第4頁
Linux網(wǎng)絡(luò)操作系統(tǒng)項目教程(歐拉-麒麟)課件 (含思政)項目7、8 shell基礎(chǔ)、學(xué)習(xí)shell script_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目7

shell基礎(chǔ)《Linux網(wǎng)絡(luò)操作系統(tǒng)項目教程(歐拉/麒麟)(微課版)(第5版)》“十四五”職業(yè)教育國家規(guī)劃教材能力要求CAPACITY了解shell的強大功能和shell的命令解釋過程。0103掌握grep的高級用法。02學(xué)會使用重定向和管道的方法。04掌握正則表示法。思政導(dǎo)入IDEOLOGY明確職業(yè)技術(shù)崗位所需的職業(yè)規(guī)范和精神,樹立社會主義核心價值觀。“高山仰止,景行行止”。為計算機事業(yè)做出過巨大貢獻的王選院士,應(yīng)是青年學(xué)生崇拜的對象,也是師生學(xué)習(xí)和前行的動力。。思政目標IDEOLOGY

“面壁十年圖破壁,難酬蹈海亦英雄”。為中華之崛起而讀書,從來都不僅限于紙上。思政內(nèi)容IDEOLOGY

王選院士曾經(jīng)為中國的計算機事業(yè)做出過巨大貢獻,并因此獲得國家最高科學(xué)技術(shù)獎,你知道王選院士嗎?王選院士(1937—2006年)是享譽國內(nèi)外的著名科學(xué)家,漢字激光照排技術(shù)創(chuàng)始人,北京大學(xué)計算機科學(xué)技術(shù)研究所主要創(chuàng)建者,歷任副所長、所長,博士生導(dǎo)師。他曾任第十屆全國政協(xié)副主席、九三學(xué)社副主席、中國科學(xué)技術(shù)協(xié)會副主席、中國科學(xué)院院士、中國工程院院士等。思政內(nèi)容IDEOLOGY王選院士發(fā)明的漢字激光照排系統(tǒng)兩次獲國家科技進步一等獎(1987年、1995年),兩次被評為全國十大科技成就(1985年、1995年),并獲國家重大技術(shù)裝備成果獎特等獎。王選院士一生榮獲了國家最高科學(xué)技術(shù)獎、聯(lián)合國教科文組織科學(xué)獎、陳嘉庚科學(xué)獎、美洲中國工程師學(xué)會個人成就獎、何梁何利基金科學(xué)與技術(shù)進步獎等20多項重大成果和榮譽。項目知識準備項目設(shè)計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS一、項目知識準備變量的定義和引用shell支持具有字符串值的變量。shell變量通過賦值語句完成變量說明并予以賦值。在命令行或shell腳本文件中使用$name的形式引用變量name的值。1.變量的定義和引用在shell中,變量的賦值格式如下:name=string其中,name是變量名,它的值就是string,“=”是賦值符號。變量名是以字母或下畫線開頭的字母、數(shù)字和下畫線字符序列組成的。一、項目知識準備變量的定義和引用通過在變量名(name)前加$字符(如$name)引用變量的值,引用的結(jié)果就是用字符串string代替$name,此過程也稱為變量替換。在定義變量時,若string中包含空格、制表符和換行符,則string必須用'string'或者"string"的形式,即用單(雙)引號將其括起來。雙引號內(nèi)允許變量替換,而單引號內(nèi)則不可以。一、項目知識準備變量的定義和引用下面給出一個定義和使用shell變量的例子。//顯示字符常量[root@Server01~]#echowhoareyouwhoareyou[root@Server01~]#echo'whoareyou'whoareyou[root@Server01~]#echo"whoareyou"whoareyou[root@Server01~]#//由于要輸出的字符串中沒有特殊字符,所以''和""的效果是一樣的,不用""但相當于使用了""[root@Server01~]#echoJet'aime>//由于要使用特殊字符('),//'不匹配,shell認為命令行沒有結(jié)束,回車后會出現(xiàn)系統(tǒng)第二提示符,//讓用戶繼續(xù)輸入命令行,按“Ctrl+C”組合鍵結(jié)束[root@Server01~]#//為了解決這個問題,可以使用下面的兩種方法[root@Server01~]#echo"Jet'aime"Jet’aime[root@Server01~]#echoJet\'aime一、項目知識準備shell變量的作用域與程序設(shè)計語言中的變量一樣,shell變量有其規(guī)定的作用范圍。shell變量分為局部變量和全局變量。局部變量的作用范圍僅限制在其命令行所在的shell或shell腳本文件中。全局變量的作用范圍則包括本shell進程及其所有子進程。可以使用export內(nèi)置命令將局部變量設(shè)置為全局變量。下面給出一個shell變量作用域的例子。//在當前shell中定義變量var1[root@Server01~]#var1=Linux//在當前shell中定義變量var2并將其輸出[root@Server01~]#var2=unix[root@Server01~]#exportvar2//引用變量的值[root@Server01~]#echo$var1Linux[root@Server01~]#echo$var2unix一、項目知識準備shell變量的作用域//顯示當前shell的PID[root@Server01~]#echo$$2670[root@Server01~]#//調(diào)用子shell[root@Server01~]#bash//顯示當前shell的PID[root@Server01~]#echo$$2709//由于var1沒有被輸出,所以在子shell中已無值[root@Server01~]#echo$var1//由于var2被輸出,所以在子shell中仍有值[root@Server01~]#echo$var2unix//返回主shell,并顯示變量的值[root@Server01~]#exit[root@Server01~]#echo$$2670[root@Server01~]#echo$var1Linux[root@Server01~]#echo$var2unix一、項目知識準備環(huán)境變量環(huán)境變量是指由shell定義和賦初值的shell變量。shell用環(huán)境變量來確定查找路徑、注冊目錄、終端類型、終端名稱、用戶名等。所有環(huán)境變量都是全局變量,并可以由用戶重新設(shè)置。不同類型的shell的環(huán)境變量有不同的設(shè)置方法。在bash中,設(shè)置環(huán)境變量用set命令,命令的格式是:set環(huán)境變量=變量的值例如,設(shè)置用戶的主目錄為/home/john,可以用以下命令:[root@Server01~]#setHOME=/home/john一、項目知識準備環(huán)境變量不加任何參數(shù)直接使用set命令可以顯示出用戶當前所有環(huán)境變量的設(shè)置,如下所示:[root@Server01~]#setBASH=/bin/bashBASH_ENV=/root/.bashrc(略)

#路徑PATH的設(shè)置PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11PS1='[\u@\h\W]\$'PS2='>'SHELL=/bin/bash可以看到其中路徑PATH的設(shè)置為(使用“set|grepPATH=”命令過濾需要的內(nèi)容):PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/root/bin總共有5個目錄,bash會在這些目錄中依次搜索用戶輸入的命令的可執(zhí)行文件。在環(huán)境變量前面加上$符號,表示引用環(huán)境變量的值,例如:[root@Server01~]#cd$HOME上述命令將把目錄切換到用戶的主目錄。當修改PATH變量時,例如,將一個路徑/tmp加到PATH變量前,應(yīng)設(shè)置為:[root@Server01~]#PATH=/tmp:$PATH一、項目知識準備環(huán)境變量shell環(huán)境依賴于多個文件的設(shè)置。環(huán)境設(shè)置文件有兩種,一種是系統(tǒng)環(huán)境設(shè)置文件,另一種是個人環(huán)境設(shè)置文件。(1)系統(tǒng)中的用戶環(huán)境設(shè)置文件。登錄環(huán)境設(shè)置文件:/etc/profile。(2)用戶設(shè)置的環(huán)境設(shè)置文件。登錄環(huán)境設(shè)置文件:$HOME/.bash_profile。非登錄環(huán)境設(shè)置文件:$HOME/.bashrc。一、項目知識準備工作環(huán)境設(shè)置文件項目知識準備項目設(shè)計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS二、項目設(shè)計與準備項目設(shè)計與準備本項目要用到Server01,完成的任務(wù)如下。(1)理解命令運行的判斷依據(jù)(2)掌握grep的高級用法(3)掌握正則表示法(4)學(xué)會使用重定向和管道命令項目知識準備項目設(shè)計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS三、項目實施任務(wù)7-1命令運行的判斷依據(jù):;、&&、||Server01的IP地址為192.168.10.1/24,計算機的網(wǎng)絡(luò)連接方式是僅主機模式(VMnet1)。在某些情況下,若想使多條命令一次輸入而順序執(zhí)行,該如何辦呢?1.cmd;cmd例如在關(guān)機的時候希望可以先運行兩次sync同步化寫入磁盤后才關(guān)機,那么怎么操作呢?[root@Server01~]#sync;sync;shutdown-hnow在命令與命令中間利用分號(;)來隔開,這樣一來,分號前的命令運行完后就會立刻接著運行后面的命令。三、項目實施任務(wù)7-1命令運行的判斷依據(jù):;、&&、||2.$?(命令回傳值)與“&&”或“||”?!?&”及“||”命令的執(zhí)行情況說明如下表:命令執(zhí)行情況說

明cmd1&&cmd2若cmd1運行完畢且正確運行($?=0),則開始運行cmd2;若cmd1運行完畢且為錯誤($?≠0),則cmd2不運行cmd1||cmd2若cmd1運行完畢且正確運行($?=0),則cmd2不運行;若cmd1運行完畢且為錯誤($?≠0),則開始運行cmd2三、項目實施任務(wù)7-1命令運行的判斷依據(jù):;、&&、||實例說明:要求在某個目錄下面創(chuàng)建一個文件。如果該目錄存在的話,直接創(chuàng)建這個文件;如果不存在,就不進行創(chuàng)建操作?!纠?-1】使用ls查閱目錄/tmp/abc是否存在,若存在,則用touch創(chuàng)建/tmp/abc/hehe。[root@Server01~]#ls/tmp/abc&&touch/tmp/abc/hehels:無法訪問'/tmp/abc':沒有那個文件或目錄#說明找不到該目錄,但并沒有touch的錯誤,表示touch并沒有運行[root@Server01~]#mkdir/tmp/abc[root@Server01~]#ls/tmp/abc&&touch/tmp/abc/hehe[root@Server01~]#ll/tmp/abctotal0-rw-r--r--.1rootroot0Jul1422:34hehe三、項目實施任務(wù)7-1命令運行的判斷依據(jù):;、&&、||上面的例子中,我們還必須手動自行創(chuàng)建目錄,很麻煩。能不能自動判斷:沒有該目錄就創(chuàng)建呢?【例7-2】測試/tmp/abc是否存在,若不存在,則予以創(chuàng)建;若存在,就不做任何事情。[root@Server01~]#rm-r/tmp/abc<==先刪除此目錄以方便測試[root@Server01~]#ls/tmp/abc||mkdir/tmp/abcls:無法訪問'/tmp/abc':沒有那個文件或目錄[root@Server01~]#ll/tmp/abcTotal0<==結(jié)果出現(xiàn)了,能訪問到該目錄,不報錯,說明運行了mkdir命令三、項目實施任務(wù)7-1命令運行的判斷依據(jù):;、&&、||【例7-3】如果不管/tmp/abc存在與否,都要創(chuàng)建/tmp/abc/hehe文件,怎么辦呢?

[root@Server01~]#ls/tmp/abc||mkdir/tmp/abc&&touch/tmp/abc/hehe分析:若/tmp/abc不存在?;貍??≠0;因為||遇到不為0的$?,故開始執(zhí)行mkdir/tmp/abc,由于mkdir/tmp/abc會成功執(zhí)行,所以回傳$?=0;因為&&遇到$?=0,故會執(zhí)行touch/tmp/abc/hehe,最終hehe就被創(chuàng)建了。若/tmp/abc存在?;貍??=0;因為||遇到$?=0不會執(zhí)行,此時$?=0繼續(xù)向后傳;而&&遇到$?=0就開始創(chuàng)建/tmp/abc/hehe,所以最終/tmp/abc/hehe被創(chuàng)建。流程圖如下:三、項目實施任務(wù)7-1命令運行的判斷依據(jù):;、&&、||【例7-4】以ls測試/tmp/bobbying是否存在:若存在,則顯示“exist”;若不存在,則顯示“notexist”。ls/tmp/bobbying&&echo"exist"||echo"notexist"意思是說,在ls/tmp/bobbying運行后,若正確,就運行echo"exist",若有問題,就運行echo"notexist"。那如果寫成如下的方式又會如何呢?三、項目實施任務(wù)7-2掌握grep的高級使用grep是shell中處理字符很方便的命令,其命令格式如下。格式:grep[-A][-B][--color=auto]'查找字符串'filename選項與參數(shù)的含義如下。-A:后面可加數(shù)字,為after的意思,除了列出該行外,后續(xù)的n行也列出來。-B:后面可加數(shù)字,為befor的意思,除了列出該行外,前面的n行也列出來。三、項目實施任務(wù)7-2掌握grep的高級使用【例7-5】用dmesg列出核心信息,再以grep找出內(nèi)含IPv6的那行。[root@Server01~]#dmesg|grep'IPv6'[1.228032]SegmentRoutingwithIPv6[13.707603]IPv6:ADDRCONF(NETDEV_UP):ens160:linkisnotready#dmesg可列出核心信息,通過grep獲取IPv6的相關(guān)信息。三、項目實施任務(wù)7-2掌握grep的高級使用【例7-6】承上題,要將獲取到的關(guān)鍵字顯色,且加上行號(-n)來表示。[root@Server01~]#dmesg|grep-n--color=auto'IPv6'1265:[1.228032]SegmentRoutingwithIPv61531:[13.707603]IPv6:ADDRCONF(NETDEV_UP):ens160:linkisnotready#除了會有特殊顏色外,最前面還有行號三、項目實施任務(wù)7-2掌握grep的高級使用【例7-7】承上題,在關(guān)鍵字所在行的前一行與后一行也一起找出來顯示。[root@Server01~]#dmesg|grep-n-A1-B1--color=auto'IPv6'1264-[1.227794]NET:Registeredprotocolfamily101265:[1.228032]SegmentRoutingwithIPv61266-[1.228032]NET:Registeredprotocolfamily17--1530-[9.349047]random:7urandomwarning(s)missedduetoratelimiting1531:[13.707603]IPv6:ADDRCONF(NETDEV_UP):ens160:linkisnotready1532-[13.761952]vmxnet30000:03:00.0ens160:intrtype3,mode0,2v#如上所示,你會發(fā)現(xiàn)關(guān)鍵字1265所在的前后各1行及1531前后各1行也都被顯示出來#這樣可以讓你將關(guān)鍵字前后數(shù)據(jù)找出來進行分析三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式說明:練習(xí)文件sample.txt的內(nèi)容。文件共有22行,最底下一行為空白行。1.查找特定字符串。假設(shè)我們要從文件sample.txt當中取得“the”這個特定字符串,最簡單的方式是:[root@Server01~]#grep-n'the'/root/sample.txt8:Ican'tfinishthetest.12:thesymbol'*'isrepresentedasstart.15:Youarethebestismeanyouaretheno.1.16:Theworld<Happy>isthesamewith"glad".18:googleisthebesttoolsforsearchkeyword.如果想要反向選擇呢?也就是說,當該行沒有“the”這個字符串時才顯示在屏幕上:[root@Server01~]#grep-vn'the'/root/sample.txt三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式如果你想要獲得不論大小寫的“the”這個字符串,則執(zhí)行[root@Server01~]#grep-in'the'/root/sample.txt8:Ican'tfinishthetest.9:Oh!Thesouptastegood.12:thesymbol'*'isrepresentedasstart.14:Thegdsoftwareisalibraryfordraftingprograms.15:Youarethebestismeanyouaretheno.1.16:Theworld<Happy>isthesamewith"glad".18:googleisthebesttoolsforsearchkeyword.三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式2.利用中括號[]來搜尋集合字符。對比“test”或“taste”這兩個單詞可以發(fā)現(xiàn),它們有共同點“t?st”存在。這個時候,可以這樣來查尋:[root@Server01~]#grep-n't[ae]st'/root/sample.txt8:Ican'tfinishthetest.9:Oh!Thesouptastegood.其實[]里面不論有幾個字符,都只代表某一個字符,所以,上面的例子說明需要的字符串是tast或test。三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式而如果想要搜尋到有“oo”的字符時,則使用:[root@Server01~]#grep-n'oo'/root/sample.txt1:"OpenSource"isagoodmechanismtodevelopprograms.2:appleismyfavoritefood.3:Footballgameisnotusefeetonly.9:Oh!Thesouptastegood.18:googleisthebesttoolsforsearchkeyword.19:goooooogleyes!三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式如果不想要“oo”前面有“g”的行顯示出來。此時,可以利用在集合字節(jié)的反向選擇[^]來完成:[root@Server01~]#grep-n'[^g]oo'/root/sample.txt2:appleismyfavoritefood.3:Footballgameisnotusefeetonly.18:googleisthebesttoolsforsearchkeyword.19:goooooogleyes!三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式例如大寫英文/小寫英文/數(shù)字等,就可以使用[a-z],[A-Z],[0-9]等方式來書寫。假設(shè)oo前面不想有小寫字母,則:[root@Server01~]#grep-n'[^a-z]oo'sample.txt3:Footballgameisnotusefeetonly.獲取有數(shù)字的那一行:[root@Server01~]#grep-n'[0-9]'/root/sample.txt5:However,thisdressisabout$3183dollars.15:Youarethebestismeanyouaretheno.1.三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式3.行首與行尾字節(jié)^$。查詢到行首是字符串“the”:[root@Server01~]#grep-n'^the'/root/sample.txt12:thesymbol'*'isrepresentedasstart.想要開頭是小寫字母的那些行列出:[root@Server01~]#grep-n'^[a-z]'/root/sample.txt如果不想要開頭是英文字母,則可以這樣:[root@Server01~]#grep-n'^[^a-zA-Z]'/root/sample.txt1:"OpenSource"isagoodmechanismtodevelopprograms.21:#IamBobby三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式如果想要找出行尾結(jié)束為小數(shù)點(.)的那些行。[root@Server01~]#grep-n'\.$'/root/sample.txt如果想要找出哪一行是空白行,即該行沒有輸入任何數(shù)據(jù)。[root@Server01~]#grep-n'^$'/root/sample.txt22:因為只有行首跟行尾有(^$),所以這樣就可以找出空白行了。三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式4.任意一個字符“.”與重復(fù)字節(jié)“*”。.(小數(shù)點):代表一個任意字符。*(星號):代表重復(fù)前一個字符0次到無窮多次假設(shè)需要找出“g??d”的字符串,即共有4個字符,開頭是“g”而結(jié)束是“d”?[root@Server01~]#grep-n'g..d'/root/sample.txt1:"OpenSource"isagoodmechanismtodevelopprograms.9:Oh!Thesouptastegood.16:Theworld<Happy>isthesamewith"glad".三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式當需要“至少兩個o以上的字符串”時,就需要ooo*,即[root@Server01~]#grep-n'ooo*'/root/sample.txt如果想要字符串開頭與結(jié)尾都是g,但是兩個g之間僅能存在至少一個o。[root@Server01~]#grep-n‘goo*g'sample.txt如果想要找出以g開頭且以g結(jié)尾的字符串,當中的字節(jié)可有可無,那該如何操作呢?[root@Server01~]#grep-n'g.*g'/root/sample.txt如果想要找出“任意數(shù)字”的行列呢?[root@Server01~]#grep-n'[0-9][0-9]*'/root/sample.txt三、項目實施任務(wù)7-3練習(xí)基礎(chǔ)正則表達式5.限定連續(xù)RE字符范圍{}“{}”:限定范圍的字符。但因為“{”與“}”的符號在shell里是有特殊意義的,所以必須使用轉(zhuǎn)義字符“\”來讓其失去特殊意義才行。假設(shè)要找到含兩個o的字符串的行:[root@Server01~]#grep-n'o\{2\}'/root/sample.txt假設(shè)要找出g后面接2~5個o,然后再接一個g的字符串:[root@Server01~]#grep-n'go\{2,5\}g'/root/sample.txt如果想要的是2個o以上的goooo....g呢?[root@Server01~]#grep-n'go\{2,\}g'/root/sample.txt三、項目實施任務(wù)7-4基礎(chǔ)正則表達式的特殊字符匯總基礎(chǔ)正則表示的特殊字符匯總成表如下:三、項目實施任務(wù)7-4基礎(chǔ)正則表達式的特殊字符匯總基礎(chǔ)正則表示的特殊字符匯總成表(續(xù))如下:重定向符說

明<

實現(xiàn)輸入重定向。輸入重定向并不經(jīng)常使用,因為大多數(shù)命令都以參數(shù)的形式在命令行上指定輸入文件的文件名。盡管如此,當使用一個不接受文件名為輸入?yún)?shù)的命令,而需要的輸入又是在一個已存在的文件中時,就能用輸入重定向解決問題>或>>實現(xiàn)輸出重定向。輸出重定向比輸入重定向更常用。輸出重定向使用戶能把一個命令的輸出重定向到一個文件中,而不是顯示在屏幕上。很多情況下都可以使用這種功能。例如,如果某個命令的輸出很多,在屏幕上不能完全顯示,即可把它重定向到一個文件中,稍后再用文本編輯器來打開這個文件2>或2>>實現(xiàn)錯誤重定向&>同時實現(xiàn)輸出重定向和錯誤重定向三、項目實施任務(wù)7-5使用重定向重定向就是不使用系統(tǒng)的標準輸入端口、標準輸出端口或標準錯誤端口,而進行重新的指定,所以重定向分為輸入重定向、輸出重定向和錯誤重定向。通常情況下,重定向到一個文件。在shell中,要實現(xiàn)重定向主要依靠重定向符,即shell是檢查命令行中有無重定向符來決定是否需要實施重定向。重定向符如下表:三、項目實施任務(wù)7-5使用重定向下面舉幾個使用重定向的例子。(1)將ls命令生成的/tmp目錄的一個清單存到當前目錄中的dir文件中。[root@Server01~]#ls-l/tmp>dir(2)將ls命令生成的/etc目錄的一個清單以追加的方式存到當前目錄中的dir文件中。[root@Server01~]#ls-l/etc>>dir(3)passwd文件的內(nèi)容作為wc命令的輸入(wc命令用來計算數(shù)字,可以計算文件的Byte數(shù)、字數(shù)或是列數(shù),若不指定文件名稱,或是所給予的文件名為“-”,則wc指令會從標準輸入設(shè)備讀取數(shù)據(jù))。[root@Server01~]#wc</etc/passwd(4)將命令myprogram的錯誤信息保存在當前目錄下的err_file文件中。[root@Server01~]#myprogram2>err_file(5)將命令myprogram的輸出信息和錯誤信息保存在當前目錄下的output_file文件中。[root@Server01~]#myprogram&>output_file(6)將命令ls的錯誤信息保存在當前目錄下的err_file文件中。[root@Server01~]#ls-l2>err_file當我們輸入重定向符時,命令解釋程序會檢查目標文件是否存在。如果不存在,命令解釋程序?qū)鶕?jù)給定的文件名創(chuàng)建一個空文件;如果文件已經(jīng)存在,命令解釋程序則會清除其內(nèi)容并準備寫入命令的輸出到結(jié)果。三、項目實施任務(wù)7-5使用重定向bash輸入輸出重定向可以通過使用下面選項設(shè)置為不覆蓋已存在文件:[root@Server01~]#set-onoclobber這個選項僅用于對當前命令解釋程序輸入輸出進行重定向,而其他程序仍可能覆蓋已存在的文件。(7)/dev/null??赵O(shè)備的一個典型用法是丟棄從find或grep等命令送來的錯誤信息:[root@Server01~]#su-yangyun[yangyun@Server01~]$grepIPv6/etc/*2>/dev/null[yangyun@Server01~]$grepIPv6/etc/* //會顯示包含許多錯誤的所有信息[yangyun@Server01~]$exit注銷[root@Server01~]#三、項目實施任務(wù)7-6使用管道命令許多Linux命令具有過濾特性,即一條命令通過標準輸入端口接收一個文件中的數(shù)據(jù),命令執(zhí)行后產(chǎn)生的結(jié)果數(shù)據(jù)又通過標準輸出端口送給后一條命令,作為該命令的輸入數(shù)據(jù)。后一條命令也是通過標準輸入端口接收輸入數(shù)據(jù)。shell提供管道命令“|”將這些命令前后銜接在一起,形成一個管道線。格式為命令1|命令2|...|命令n管道線中的每一條命令都作為一個單獨的進程運行,每一條命令的輸出作為下一條命令的輸入。由于管道線中的命令總是從左到右順序執(zhí)行的,所以管道線是單向的。三、項目實施任務(wù)7-6使用管道命令下面再舉幾個使用管道的例子。(1)以長格式遞歸的方式分屏顯示/etc目錄下的文件和目錄列表。[root@Server01~]#ls-Rl/etc|more(2)分屏顯示文本文件/etc/passwd的內(nèi)容。[root@Server01~]#cat/etc/passwd|more(3)統(tǒng)計文本文件/etc/passwd的行數(shù)、字數(shù)和字符數(shù)。[root@Server01~]#cat/etc/passwd|wc(4)查看是否存在john和yangyun用戶賬號。[root@Server01~]#cat/etc/passwd|grepjohn[root@Server01~]#cat/etc/passwd|grepyangyunyangyun:x:1000:1000:yangyun:/home/yangyun:/bin/bash(5)查看系統(tǒng)是否安裝了ssh軟件包。[root@Server01~]#rpm-qa|grepssh(6)顯示文本文件中的若干行。[root@Server01~]#tail-15/etc/passwd|head-3項目8

學(xué)習(xí)shellscript《Linux網(wǎng)絡(luò)操作系統(tǒng)項目教程(歐拉/麒麟)(微課版)(第5版)》“十四五”職業(yè)教育國家規(guī)劃教材能力要求CAPACITY理解shellscript。0103理解shellscript。02掌握循環(huán)的用法。04理解shellscript。思政導(dǎo)入IDEOLOGY“雪人計劃”同樣服務(wù)國家的“信創(chuàng)產(chǎn)業(yè)”。最為關(guān)鍵的是,中國可以借助IPv6的技術(shù)升級,改變自己在國際互聯(lián)網(wǎng)治理體系中的地位。這樣的事件可以大大激發(fā)學(xué)生的愛國情懷和求知求學(xué)的斗志。思政目標IDEOLOGY

“靡不有初,鮮克有終?!薄澳乳e,白了少年頭,空悲切?!鼻嗄陮W(xué)生為人做事要有頭有尾、善始善終、不負韶華。思政內(nèi)容IDEOLOGY

“雪人計劃(YetiDNSProject)”是基于全新技術(shù)架構(gòu)的全球下一代互聯(lián)網(wǎng)IPv6根服務(wù)器測試和運營實驗項目,旨在打破現(xiàn)有的根服務(wù)器困局,為下一代互聯(lián)網(wǎng)提供更多的根服務(wù)器解決方案?!把┤擞媱潯笔?015年6月23日在國際互聯(lián)網(wǎng)名稱與數(shù)字地址分配機構(gòu)(theInternetCorporationforAssignedNamesandNumbers,ICANN)第53屆會議上正式對外發(fā)布的。思政內(nèi)容IDEOLOGY2019年6月26日,中華人民共和國工業(yè)和信息化部同意中國互聯(lián)網(wǎng)絡(luò)信息中心設(shè)立域名根服務(wù)器及運行機構(gòu)。“雪人計劃”于2016年在中國、美國、日本、印度、俄羅斯、德國、法國等全球16個國家完成25臺IPv6根服務(wù)器架設(shè),其中1臺主根服務(wù)器和3臺輔根服務(wù)器部署在中國,事實上形成了13臺原有根服務(wù)器加25臺IPv6根服務(wù)器的新格局,為建立多邊、透明的國際互聯(lián)網(wǎng)治理體系打下堅實基礎(chǔ)。項目知識準備項目設(shè)計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS一、項目知識準備了解shellscriptscript是“腳本、劇本”的意思。shellscript是利用shell的功能所寫的一個“程序(program)”。shellscript可以被簡單地看成是批處理文件,也是一個程序語言,并且這個程序語言都是利用shell與相關(guān)工具命令組成的,所以不需要編譯即可運行。一、項目知識準備編寫與執(zhí)行一個shellscript1.在shellscript撰寫中的注意事項命令的執(zhí)行是從上而下、從左而右進行的。命令、選項與參數(shù)間的多個空格都會被忽略掉??瞻仔幸矊⒈缓雎缘?,并且按“Tab”鍵所生成的空白同樣被視為空格鍵。如果讀取到一個Enter符號(CR),就嘗試開始運行該行(或該串)命令。如果一行的內(nèi)容太多,則可以使用“\[Enter]”來延伸至下一行。“#”可作為注解。任何加在#后面的數(shù)據(jù)將全部被視為注解文字而被忽略。一、項目知識準備編寫與執(zhí)行一個shellscript2.運行shellscript程序假設(shè)程序文件名是/home/dmtsai/shell.sh,那如何運行這個文件呢?(1)直接命令下達:shell.sh文件必須要具備可讀與可運行(rx)的權(quán)限。絕對路徑:使用/home/dmtsai/shell.sh來下達命令。相對路徑:假設(shè)工作目錄在/home/dmtsai/,則使用./shell.sh來運行。變量“PATH”功能:將shell.sh放在PATH指定的目錄內(nèi),如~/bin/。(2)以bash程序來運行:通過“bashshell.sh”或“shshell.sh”來運行。一、項目知識準備編寫與執(zhí)行一個shellscript3.編寫第一個shellscript程序[root@Server01~]#cd;mkdir/root/scripts;cd/root/scripts[root@Server01scripts]#vimsh01.sh#!/bin/bash#Program:#Thisprogramshows"HelloWorld!"inyourscreen.#History:#2021/08/23 Bobby FirstreleasePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATHecho-e"HelloWorld!\a\n"exit0一、項目知識準備編寫與執(zhí)行一個shellscript第一個shellscript程序分析(1)第一行#!/bin/bash在宣告這個script使用的shell名稱。(2)程序內(nèi)容的說明。整個script當中,除了第一行的“#!”是用來聲明shell的之外,其他的#都是“注釋”用途。所以上面的程序當中,第二行以下就是用來說明整個程序的基本數(shù)據(jù)。(3)主要環(huán)境變量的聲明。環(huán)境變量設(shè)置好,其中PATH與LANG(如果使用與輸出相關(guān)的信息時)是最重要的。(4)主要程序部分。在這個例子中,主要程序部分就是echo那一行。(5)運行成果告知(定義回傳值)。例子中,使用exit0,這代表離開script并且回傳一個0給系統(tǒng)。

該程序的運行結(jié)果如下:[root@Server01scripts]#shsh01.shHelloWorld!一、項目知識準備養(yǎng)成撰寫shellscript的良好習(xí)慣建議一定要養(yǎng)成良好的script撰寫習(xí)慣,在每個script的文件頭處包含如下內(nèi)容。script的功能。script的版本信息。script的作者與聯(lián)絡(luò)方式。script的版權(quán)聲明方式。script的History(歷史記錄)。script內(nèi)較特殊的命令,使用“絕對路徑”的方式來執(zhí)行。script運行時需要的環(huán)境變量預(yù)先聲明與設(shè)置。項目知識準備項目設(shè)計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS二、項目設(shè)計與準備項目設(shè)計與準備本項目要用到Server01和Client1,完成的任務(wù)如下。(1)編寫簡單的shellscript(2)用好判斷式(test和[])(3)利用條件判斷式(4)利用循環(huán)(loop)其中Server01的IP地址為192.168.10.1/24,Client1的IP地址為192.168.10.21/24,兩臺計算機的網(wǎng)絡(luò)連接方式都是僅主機模式(VMnet1)。項目知識準備項目設(shè)計與準備項目實施項目實錄:Linux系統(tǒng)安裝與基本配置內(nèi)容導(dǎo)航CONTENTS三、項目實施任務(wù)8-1通過簡單范例學(xué)習(xí)shellscript1.對話式腳本:變量內(nèi)容由使用者決定。要求:使用read命令撰寫一個script。讓用戶輸入firstname與lastname后,在屏幕上顯示“Yourfullnameis:”的內(nèi)容。①編寫程序[root@Server01scripts]#vimsh02.sh#!/bin/bash#Program:#Userinputshisfirstnameandlastname.Programshowshisfullname.#History:#2012/08/23 Bobby FirstreleasePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATHread-p"Pleaseinputyourfirstname:"firstname #提示使用者輸入read-p"Pleaseinputyourlastname:"lastname #提示使用者輸入echo-e"\nYourfullnameis:$firstname$lastname" #結(jié)果由屏幕輸出②運行程序[root@Server01scripts]#shsh02.sh三、項目實施任務(wù)8-1通過簡單范例學(xué)習(xí)shellscript2.隨日期變化:利用date進行文件的創(chuàng)建例子:假設(shè)想要創(chuàng)建3個空文件(通過touch),文件名由用戶輸入和前天、昨天和今天的日期決定。例如,用戶輸入“filename”,而今天的日期是2022/08/15,則3個文件名為filename_20220813、filename_20220814和filename_2020815。①編寫程序:分兩種情況運行sh03.sh:一次直接按“Enter”鍵來查閱文件名是什么,另一次可以輸入一些字符,這樣可以判斷腳本是否設(shè)計正確。[root@Server01scripts]#vimsh03.sh#!/bin/bash#Program:#Programcreatesthreefiles,whichnamedbyuser'sinputanddatecommand.#History:#2021/07/13 Bobby FirstreleasePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATH#讓使用者輸入文件名稱,并取得fileuser這個變量echo-e"Iwilluse'touch'commandtocreate3files." #純粹顯示信息read-p"Pleaseinputyourfilename:"fileuser #提示用戶輸入三、項目實施任務(wù)8-1通過簡單范例學(xué)習(xí)shellscript續(xù)上#為了避免用戶隨意按“Enter”鍵,利用變量功能分析文件名是否設(shè)置?filename=${fileuser:-"filename"} #開始判斷是否設(shè)置了文件名#開始利用date命令來取得所需要的文件名date1=$(date--date='2daysago'+%Y%m%d) #前兩天的日期,注意+號前面有個空格date2=$(date--date='1daysago'+%Y%m%d) #前一天的日期,注意+號前面有個空格date3=$(date+%Y%m%d) #今天的日期file1=${filename}${date1} #這三行設(shè)置文件名file2=${filename}${date2}file3=${filename}${date3}#創(chuàng)建文件touch"$file1"touch"$file2"touch"$file3"②運行程序[root@Server01scripts]#shsh04.sh[root@Server01scripts]#ll三、項目實施任務(wù)8-1通過簡單范例學(xué)習(xí)shellscript3.數(shù)值運算:簡單的加減乘除可以使用declare來定義變量的類型,利用“$((計算式))”來進行數(shù)值運算,bashshell系統(tǒng)默認僅支持到整數(shù)。例子:要求用戶輸入兩個變量,然后將兩個變量的內(nèi)容相乘,最后輸出相乘的結(jié)果。①編寫程序[root@Server01scripts]#vimsh04.sh#!/bin/bash#Program:#Userinputs2integernumbers;programwillcrossthesetwonumbers.#History:#2021/08/23 Bobby Firstrelease三、項目實施任務(wù)8-1通過簡單范例學(xué)習(xí)shellscript續(xù)上PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATHecho-e"YouSHOULDinput2numbers,Iwillcrossthem!\n"read-p"firstnumber:"firstnuread-p"secondnumber:"secnutotal=$(($firstnu*$secnu))echo-e"\nTheresultof$firstnu╳$secnuis==>$total"②運行程序

[root@Server01scripts]#shsh04.sh在數(shù)值的運算上,建議使用下面的方式進行運算:var=$((運算內(nèi)容))三、項目實施任務(wù)8-2了解腳本的運行方式的差異1.利用直接運行的方式來運行腳本使用這種執(zhí)行方式時,腳本是在子程序的bash內(nèi)運行的,并且當子程序完成后,在子程序內(nèi)的各項變量或動作將會結(jié)束而不會傳回到父程序中。該程序為例說明:[root@Server01scripts]#echo$firstname$lastname<==首先確認變量并不存在[root@Server01scripts]#shsh02.shPleaseinputyourfirstname:Bobby<==這個名字是讀者自己輸入的Pleaseinputyourlastname:YangYourfullnameis:BobbyYang<==在腳本運行中,這兩個變量會生效[root@Server01scripts]#echo$firstname$lastname<==事實上,這兩個變量在父程序的bash中還是不存在三、項目實施任務(wù)8-2了解腳本的運行方式的差異當你使用直接運行的方法來處理時,系統(tǒng)會開辟一個新的bash來運行sh02.sh里面的命令。因此firstname、lastname等變量其實是在圖中的子程序bash內(nèi)運行的。當sh02.sh運行完畢,子程序bash內(nèi)的所有數(shù)據(jù)便被移除,因此上面的練習(xí)中,在父程序下面執(zhí)行echo$firstname時,就看不到任何東西了。如下圖所示。三、項目實施任務(wù)8-2了解腳本的運行方式的差異2.利用source運行腳本:在父程序中運行如果使用source來運行命令,那會出現(xiàn)什么情況呢?請看下面的運行結(jié)果:[root@Server01scripts]#sourcesh02.shPleaseinputyourfirstname:Bobby<==這個名字是讀者自己輸入的Pleaseinputyourlastname:YangYourfullnameis:BobbyYang<==在script運行中,這兩個變量會生效

[root@Server01scripts]#echo$firstname$lastnameBobbyYang <==有數(shù)據(jù)產(chǎn)生如圖所示:sh02.sh會在父程序中運行,因此各項操作都會在原來的bash內(nèi)生效。三、項目實施任務(wù)8-3利用test命令的測試功能當需要檢測系統(tǒng)上面某些文件或者是相關(guān)的屬性時,利用test命令是最好不過的選擇。舉例來說,要檢查/dmtsai是否存在時,使用[root@Server01scripts]#test-e/dmtsai&&echo"exist"||echo"Notexist"Notexist<==結(jié)果顯示不存在三、項目實施任務(wù)8-3利用test命令的測試功能test命令各選項的作用——文件類型,如下表所示其余類型的判斷詳解教材。測試的標志代表意義-e該“文件名”是否存在(常用)-f該“文件名”是否存在且為文件(file)(常用)-d該“文件名”是否存在且為目錄(directory)(常用)-b該“文件名”是否存在且為一個blockdevice設(shè)備-c該“文件名”是否存在且為一個characterdevice設(shè)備-S該“文件名”是否存在且為一個Socket文件-p該“文件名”是否存在且為一個FIFO(pipe)文件-L該“文件名”是否存在且為一個連結(jié)文檔三、項目實施任務(wù)8-3利用test命令的測試功能test簡單的例子:輸入一個文件名,然后做如下判斷。這個文件是否存在,若不存在,則給出“Filenamedoesnotexist”的信息,并中斷程序。若這個文件存在,則判斷其是文件還是目錄,結(jié)果輸出“Filenameisregularfile”或“Filenameisdirectory”。判斷一下,執(zhí)行者的身份對這個文件或目錄所擁有的權(quán)限,并輸出權(quán)限數(shù)據(jù)。[root@Server01scripts]#vimsh05.sh#!/bin/bash#Program:#Userinputafilename,programwillchecktheflowing:#1.)exist?2.)file/directory?3.)filepermissions#History:#2021/08/25 Bobby FirstreleasePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATH三、項目實施任務(wù)8-3利用test命令的測試功能續(xù)上:#讓使用者輸入文件名,并且判斷使用者是否輸入了字符串echo-e"Pleaseinputafilename,Iwillcheckthefilename'stypeand\permission.\n\n"read-p"Inputafilename:"filenametest-z$filename&&echo"YouMUSTinputafilename."&&exit0#判斷文件是否存在,若不存在則顯示信息并結(jié)束腳本test!-e$filename&&echo"Thefilename'$filename'DONOTexist"&&exit0#開始判斷文件類型與屬性test-f$filename&&filetype="regularefile"test-d$filename&&filetype="directory"test-r$filename&&perm="readable"test-w$filename&&perm="$permwritable"test-x$filename&&perm="$permexecutable"#開始輸出信息echo"Thefilename:$filenameisa$filetype"echo"Andthepermissionsare:$perm“運行:[root@Server01scripts]#shsh05.sh三、項目實施任務(wù)8-4利用判斷符號[]除了使用test之外,還可以利用判斷符號“[]”(就是中括號)來進行數(shù)據(jù)的判斷。如果想要知道$HOME這個變量是否為空,可以這樣做:

[root@Server01scripts]#[-z"$HOME"];echo$?-zstring的含義是,若string長度為零,則為真。使用中括號必須要特別注意,因為中括號用在很多地方,包括通配符與正則表達式等,所以如果要在bash的語法當中使用中括號作為shell的判斷式,必須要注意中括號的兩端需要有空格字符來分隔。三、項目實施任務(wù)8-4利用判斷符號[]除了使用test之外,還可以利用判斷符號“[]”(就是中括號)來進行數(shù)據(jù)的判斷。如果想要知道$HOME這個變量是否為空,可以這樣做:

[root@Server01scripts]#[-z"$HOME"];echo$?-zstring的含義是,若string長度為零,則為真。使用中括號必須要特別注意,因為中括號用在很多地方,包括通配符與正則表達式等,所以如果要在bash的語法當中使用中括號作為shell的判斷式,必須要注意中括號的兩端需要有空格字符來分隔。注意事項:在中括號[]內(nèi)的每個組件都需要有空格鍵來分隔。在中括號內(nèi)的變量,最好都以雙引號括起來。在中括號內(nèi)的常數(shù),最好都以單或雙引號括起來。三、項目實施任務(wù)8-4利用判斷符號[]案例,要求如下:當運行一個程序的時候,這個程序會讓用戶選擇Y或N。如果用戶輸入Y或y,就顯示“OK,continue”。如果用戶輸入n或N,就顯示“Oh,interrupt!”如果不是Y/y/N/n之內(nèi)的其他字符,就顯示“Idon'tknowwhatyourchoiceis”。分析:需要利用中括號、&&與||。[root@Server01scripts]#vimsh06.sh#!/bin/bash#Program:#Thisprogramshowstheuser'schoice#History:#2021/08/25 Bobby Firstrelease三、項目實施任務(wù)8-4利用判斷符號[]續(xù)上:PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATHread-p"Pleaseinput(Y/N):"yn["$yn"=="Y"-o"$yn"=="y"]&&echo"OK,continue"&&exit0["$yn"=="N"-o"$yn"=="n"]&&echo"Oh,interrupt!"&&exit0echo"Idon'tknowwhatyourchoiceis"&&exit0運行:

[root@Server01scripts]#shsh06.sh三、項目實施任務(wù)8-5利用if…then條件判斷式if…then是最常見的條件判斷式。簡單地說,就是當符合某個條件判斷的時候,就進行某項工作。if…then的判斷還有多層次的情況,我們將分別介紹。1.單層、簡單條件判斷式如果只有一個判斷式要進行,那么可以簡單地這樣做:if[條件判斷式];then

當條件判斷式成立時,可以進行的命令工作內(nèi)容;fi<==將if反過來寫,就成為fi了,結(jié)束if之意三、項目實施任務(wù)8-5利用if…then條件判斷式下面將sh06.sh這個腳本修改為if...then的樣式:[root@Server01scripts]#cpsh06.shsh06-2.sh<==這樣改得比較快[root@Server01scripts]#vimsh06-2.sh#!/bin/bash#Program:#Thisprogramshowstheuser'schoice#History:#2021/08/25BobbyFirstreleasePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATHread-p"Pleaseinput(Y/N):"yn三、項目實施任務(wù)8-5利用if…then條件判斷式續(xù)上if["$yn"=="Y"]||["$yn"=="y"];thenecho"OK,continue"exit0fiif["$yn"=="N"]||["$yn"=="n"];thenecho"Oh,interrupt!"exit0fiecho"Idon'tknowwhatyourchoiceis"&&exit0運行:

[root@Server01scripts]#shsh06-2.sh三、項目實施任務(wù)8-5利用if…then條件判斷式2.多重、復(fù)雜條件判斷式在同一個數(shù)據(jù)的判斷中,如果該數(shù)據(jù)需要進行多種不同的判斷,那么應(yīng)該怎么做呢?可以使用:#多個條件判斷(if...elif...elif...else)分多種不同情況運行if[條件判斷式一];then

當條件判斷式一成立時,可以進行的命令工作內(nèi)容;elif[條件判斷式二];then

當條件判斷式二成立時,可以進行的命令工作內(nèi)容;else

當條件判斷式一與二均不成立時,可以進行的命令工作內(nèi)容;fi三、項目實施任務(wù)8-5利用if…then條件判斷式我們將sh06-2.sh改寫成這樣:[root@Server01scripts]#cpsh06-2.shsh06-3.sh[root@Server01scripts]#vimsh06-3.sh#!/bin/bash#Program:#Thisprogramshowstheuser'schoice#History:#2021/08/25BobbyFirstreleasePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATHread-p"Pleaseinput(Y/N):"ynif["$yn"=="Y"]||["$yn"=="y"];thenecho"OK,continue"elif["$yn"=="N"]||["$yn"=="n"];thenecho"Oh,interrupt!"elseecho"Idon'tknowwhatyourchoiceis"fi運行:[root@Server01scripts]#shsh06-3.sh三、項目實施任務(wù)8-5利用if…then條件判斷式如果你不希望用戶由鍵盤輸入額外的數(shù)據(jù),那么就可以使用上一節(jié)提到的參數(shù)功能($1),讓用戶在執(zhí)行命令時就將參數(shù)帶進去?,F(xiàn)在我們想讓用戶輸入“hello”這個關(guān)鍵字時,利用參數(shù)的方法可以按照以下內(nèi)容依序設(shè)計。判斷$1是否為hello,如果是,就顯示“Hello,howareyou?”。如果沒有加任何參數(shù),就提示用戶必須要使用的參數(shù)。而如果加入的參數(shù)不是hello,就提醒用戶僅能使用hello為參數(shù)。整個程序是這樣的:三、項目實施任務(wù)8-5利用if…then條件判斷式[root@Server01scripts]#vimsh09.sh#!/bin/bash#Program:# Check$1isequalto"hello"#History:#2021/08/28 Bobby FirstreleasePATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexportPATHif["$1"=="hello"];thenecho"Hello,howareyou?"elif["$1"==""];thenecho"YouMUSTinputparameters,ex>{$0someword}"elseecho"Theonlyparameteris'hello',ex>{$0hello}"fi三、項目實施任務(wù)8-5利用if…then條件判斷式然后可以執(zhí)行這個程序,在$1的位置輸入hello,沒有輸入或隨意輸入,就可以看到不同的輸出。下面我們繼續(xù)來完成較復(fù)雜的例子。[root@Server01scripts]#shsh09.shhello //正確輸入Hello,howareyou?[root@Server01scripts]#shsh09.sh //沒有輸入YouMUSTinputparameters,ex>{sh09.shsomeword}[root@Server01scripts]#shsh09.shLinux //隨意輸入Theonlyparameteris'hello',ex>{sh09.shhello}[root

溫馨提示

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

最新文檔

評論

0/150

提交評論