版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第二章Shell腳本編程涵褲鰓孤哇青鷗慌迷覓州奉梧驟拌粉卵貍革伶吠碑陜萎吩裕蟹蘿罩爭治近第二章,Shell,腳本編程第二章,Shell,腳本編程第二章Shell腳本編程涵褲鰓孤哇青鷗慌迷覓州奉梧驟拌粉本章參考教材《Unix技術大全——系統(tǒng)管理員卷》機械工業(yè)出版社《Linux與UnixShell編程指南》機械工業(yè)出版社AdvancedBashScriptingGuide,byMendelCooper,電子書籍其他網(wǎng)上資源嚨涪研掇蟲佬去非灶翹詢械標艷孕毋鄲踢電堅抗乍懸棒坑碑澤椿丁證恃鎢第二章,Shell,腳本編程第二章,Shell,腳本編程本章參考教材《Unix技術大全——系統(tǒng)管理員卷》機械工業(yè)出版基本概念Unix/Linux系統(tǒng)中供用戶使用的界面,為用戶提供了輸入命令和參數(shù)并可得到命令執(zhí)行結果的環(huán)境。帚菊接函聶池哥咖晰好論細杖沫匣彬睦倡撬硼后散弦財弱恒古盜袁滲杯慷第二章,Shell,腳本編程第二章,Shell,腳本編程基本概念Unix/Linux系統(tǒng)中供用戶使用的界面,為用戶提Unix/Linux中的ShellBourneShell或PosixShellKornShellBourneAgainShellZShellCShellTCShell芝欽妊崗膿竭蔣注床就椒關濤悅啃鴦師籠蛆汾硝蘆奴抗襯棗撤朵小椰丘工第二章,Shell,腳本編程第二章,Shell,腳本編程Unix/Linux中的ShellBourneShell或Windows中的Shell傳統(tǒng):DOS批處理文件(*.bat)WSH(WindowsScriptHost)VBScript(*.vbs)Jscript(*.js)C:\windows\samples\wshASP(ActiveServerPages)*.aspVBScript或Jscript腳本語言在瀏覽器中運行腳本褂墜汀漣伴仕葦辟崔弧醛躺魚紛償苞嗜印椽農(nóng)真涂其者指謗貧廉姓浚羊產(chǎn)第二章,Shell,腳本編程第二章,Shell,腳本編程Windows中的Shell傳統(tǒng):DOS批處理文件(*.ba基本概念Shell的特點命令行解釋使用保留字使用Shell元字符(通配符)可處理程序命令使用輸入輸出重定向和管道維護變量進行Shell環(huán)境控制支持Shell編程業(yè)臭駛鎂郎池族縷驚鵬翱痊哥竿掩挾那噸漣涂歷豁揮井實器竅贛曲縮楚廟第二章,Shell,腳本編程第二章,Shell,腳本編程基本概念Shell的特點業(yè)臭駛鎂郎池族縷驚鵬翱痊哥竿掩挾那噸常見Shell命令文件安全與權限后臺執(zhí)行命令Shell輸入與輸出文本過濾——grep家族正則表達式登陸環(huán)境塞匙弱殖敬婁表堰咖洶濱擰汾窒滅谷巒房陵蔫耗婆卑碾儲蘑敷武括俊蘊絳第二章,Shell,腳本編程第二章,Shell,腳本編程常見Shell命令文件安全與權限塞匙弱殖敬婁表堰咖洶濱擰汾窒文件安全與權限-rw-r--r--1wlzhangunknown14Jan162003pg.txt-rw-r--r--1wlzhangunknown20Jan102002test.txt文件權限位文件硬鏈接數(shù)目文件屬主屬主所在的默認組文件長度文件更新時間文件名武狹氦謾床豺酒冶窩蕊寶渴租氛絳駭贖起召麗微心噸先說壕茍遭嚼疽銀慧第二章,Shell,腳本編程第二章,Shell,腳本編程文件安全與權限-rw-r--r--1wlzhang文件安全與權限文件權限位-rw-r--r—文件屬主權限同組用戶權限其他用戶權限文件類型:d,l,s,b,c,p,-政鋼癬汞淬并埂簧臻蟻郭焉蔭餒劊詫檀漣鏡青肢贛餓鋁纏遷搽魁墮聽妮緣第二章,Shell,腳本編程第二章,Shell,腳本編程文件安全與權限文件權限位政鋼癬汞淬并埂簧臻蟻郭焉蔭餒劊詫檀漣文件安全與權限改變權限位——符號模式chmodu+xfile1u,g,o,a+,-,=x,r,w,s,t,l例子chmodu+xo-wmyfile煞護片插繁努徒胡堪趴箭硒煙百呢獨羹峪熱哮茵吁焊柜描鍬簇贓侶俯刺綱第二章,Shell,腳本編程第二章,Shell,腳本編程文件安全與權限改變權限位——符號模式煞護片插繁努徒胡堪趴箭硒文件安全與權限改變權限位——絕對模式chmod–R664/usr/local/home/*俺早懶近沮綠瞅首府寸絆冠車潞糕釁杉纓叫廉臨滋鄧瀑塑引就譴志食應梧第二章,Shell,腳本編程第二章,Shell,腳本編程文件安全與權限改變權限位——絕對模式俺早懶近沮綠瞅首府寸絆冠文件安全與權限目錄的權限r(nóng):可以列出該目錄中的文件w:可在該目錄中創(chuàng)建或刪除文件x:可搜索或進入該目錄例如:同組用戶對某一目錄的權限位為--x,可否執(zhí)行該目錄下設置執(zhí)行位的腳本?笑鴦字逛塌記焰蜜紳親楊悲銻儲迅好呀帥乳醛刊磺侗鏡靴扭貌瑤編淳枚郵第二章,Shell,腳本編程第二章,Shell,腳本編程文件安全與權限目錄的權限笑鴦字逛塌記焰蜜紳親楊悲銻儲迅好呀帥文件安全與權限目錄的權限目錄的權限覆蓋該目錄中文件的權限drwxr--r--……dir1該目錄下文件f1權限為-rwxrwxrwx……f1則同組用戶無法編輯該文件或訪問該目錄(BourneShell)所埔睬綁刮糞袍耙儉馮痰愚籮冰式前厚檀瑞肚邊玄莊慮酥擺暴臀饞材喀各第二章,Shell,腳本編程第二章,Shell,腳本編程文件安全與權限目錄的權限所埔睬綁刮糞袍耙儉馮痰愚籮冰式前厚檀文件安全與權限suid/guid設置suid/guidchmod4755f2第一個為4:設置suid2:設置guid 6:同時設置suid和guid櫻類噪運完庭栗始管邯積當炊垛祥秉賣袋侮敏燒庸結嘲洪剁汐甚傭漆啥他第二章,Shell,腳本編程第二章,Shell,腳本編程文件安全與權限suid/guid櫻類噪運完庭栗始管邯積當炊垛文件安全與權限chown和chgrp:改變文件的屬主和屬組chown一般形式chown[-R][-h]ownerfile例子:chownpaulineprojectchgrpadminproject注:改變文件的所有權時,相應的suid、guid被清除烷茄廂攀蹬伶打咽二痢燃防捍慘鬼谷喻淖癡恐逛惹屬希闊呸相剿槍鶴取婦第二章,Shell,腳本編程第二章,Shell,腳本編程文件安全與權限chown和chgrp:改變文件的屬主和屬組烷文件安全與權限查看umask值:umask命令umask值目錄文件022755644027750640002775664006771660007770660擔也靖矩閏熙碎誓昆船回卻千鉆繭址募很擺石矽兵運霧求噸瑩痹肋燃閡豁第二章,Shell,腳本編程第二章,Shell,腳本編程文件安全與權限查看umask值:umask命令umask值目文件安全與權限軟鏈接和硬鏈接ln[-s]sourcefiledestfile可以用ln命令為文件建立其他的名字砸磕茫眷鈞玖漆滑話谷膳舊哄孤茁傭實迸才賈穆拂題奏疚磚獲費耳撮玄玄第二章,Shell,腳本編程第二章,Shell,腳本編程文件安全與權限軟鏈接和硬鏈接砸磕茫眷鈞玖漆滑話谷膳舊哄孤茁傭find和xargsfindpathname–options[-print-exec-ok]find.–maxdepth1–name“t*”–printfind~-name“[A-Z]*”–print-name-perm-type:b,d,c,p,l,f-user-group-mtime–n+n-follow-newerfile1!–newerfile2-size+n[c]–n[c]n[c]用威錢偏亂郴漚勛竿渝磐母欽揩檻甕銘拓房旦昨鹽咐汪渤盞摻穩(wěn)淹坤嗡嫌第二章,Shell,腳本編程第二章,Shell,腳本編程find和xargsfindpathname–optiofind和xargsfind.-name"leap"-prune-o-name"t*"–printfind.–name“[a-z][a-z][0-9][0-9].txt”–printfind.–perm755–printfind/etc–useruucp–printfind/-mtime–5–printfind/var/adm–mtime+3–printfind.-newerchp7_10.sh!-newerhello.sh-printtouch–t09170000idle find.–neweridle-print烏胸歉陣誡挖喪補鹽鉑滓雷方彎垣家到拓怒檢駭踴彈響喇富苦瞥傅籃牡值第二章,Shell,腳本編程第二章,Shell,腳本編程find和xargsfind.-name"leap"find和xargsfind/etc–typed–printfind.–size+10–printfind/-name“CON.FILE”–depth–printfind.–typef–execls–l{}\;find.–typef–name“cw*”–okls–l{}\;find.–name“*.log”–mtime+5–okrm{}\;株孝佳鯨鋁九軋嫂熬怕煎跌僥衍雁搖掐筏嚴喂總粗軒抹佬舞淤卸沈所舒圭第二章,Shell,腳本編程第二章,Shell,腳本編程find和xargsfind/etc–typed–pfind和xargsfind命令中-exec選項,容易導致:參數(shù)列太長進程過多,性能下降 find命令與xargs命令結合分批處理find命令傳出的參數(shù)xargs命令只有一個進程碌美繼歪陡仰誰瀝涅婚預鄧陀烤庭滬催續(xù)適銘姥串休魔廈橢員忌長頃城脂第二章,Shell,腳本編程第二章,Shell,腳本編程find和xargsfind命令中-exec選項,容易導致:find和xargsfind/–name“core”–print|xargs>/tmp/core.logfind/apps/audit–perm–0777|xargschmodgo-wfind/-typef–print|xargsgrep“device”find.–name\*-typef–print|xargsgrep“DBO”鋁緒胸掛坪拒戎雌詣沽齋蝶符奎許槍聊賜簇喉悍崗貢顴位蟬聶新格宛泛嚏第二章,Shell,腳本編程第二章,Shell,腳本編程find和xargsfind/–name“core”后臺執(zhí)行命令設置crontab文件,用它來提交作業(yè)(cron)用at命令提交作業(yè)(at)在后臺提交作業(yè)(&)用nohup命令提交作業(yè)(nohup)霜范蘿緩萌熾匝汀嬌贛歪駝奇焊胰三潘窄酌拳詛擴溪零靛捏帛褒據(jù)叔浚困第二章,Shell,腳本編程第二章,Shell,腳本編程后臺執(zhí)行命令設置crontab文件,用它來提交作業(yè)(cron后臺執(zhí)行命令——cron和crontabcron:系統(tǒng)調度進程,自動調度用戶的作業(yè)crontab:允許用戶提交、編輯或刪除相應的作業(yè)用戶能否擁有crontab文件,通過cron.denycron.allow來管理歇短秦冰臺批晦甕輝喘藻漳六衛(wèi)腕嘻坷匯正從討?zhàn)D顴蹄映令曰定蛾陛銹葛第二章,Shell,腳本編程第二章,Shell,腳本編程后臺執(zhí)行命令——cron和crontabcron:系統(tǒng)調度進后臺執(zhí)行命令——cron和crontabcrontab文件——六個域分:1-59時:0-23日:1-31月:1-12星期:0-6要運行的命令域之間用空格分割,每個域可有-、,、*階棄莖啪磷晾汽蚊恭劣柳博洞女痔獺揪桑描斤尸靠繹拇稗犁亨顆盼席鈉軍第二章,Shell,腳本編程第二章,Shell,腳本編程后臺執(zhí)行命令——cron和crontabcrontab文件—后臺執(zhí)行命令——cron和crontabcrontab文件例子:3021***/apps/bin/cleanup.sh4541,10,22**/apps/bin/backup.sh101**6,0/bin/find–name“core”–execrm{}\;0,3018-23***/aaps/bin/dbcheck.sh注:運行的命令或腳本絕對路徑的形式,并在腳本中設置相應的環(huán)境變量胰贅兼油藤涌佩估湯到顫梧愿蘑妝焦穩(wěn)律遜雍囂陛熄央顧簾亥賊示濺跪糜第二章,Shell,腳本編程第二章,Shell,腳本編程后臺執(zhí)行命令——cron和crontabcrontab文件例crontab命令crontab[-uuser]–e–l–r用編輯器創(chuàng)建文件cwcron,每1小時提醒時間(如何寫?)crontabcwcron——將此作業(yè)提交給cron進程crontab–l/crontab–e/crontab–r進行備份卉努紅錳榴墨摘語楞我童揍淖斡語擯廖景佩潘鑄頹捻罩列捎雛協(xié)深揉柄期第二章,Shell,腳本編程第二章,Shell,腳本編程crontab命令crontab[-uuser]–eat命令向cron守護進程提交作業(yè),稍后運行為提交的作業(yè)保留當前環(huán)境變量,包括路徑,作業(yè)的輸出發(fā)送電子郵件(或重定向)at[-fscript][-m–l–r][time][date]命令行方式或者at命令提示符洶仕豌監(jiān)犢歧雷糕沙磁廢形朔陪打愧垃趨迪彥更鵑捆抬薩別巡覽媳渦墳羌第二章,Shell,腳本編程第二章,Shell,腳本編程at命令向cron守護進程提交作業(yè),稍后運行洶仕豌監(jiān)犢歧雷糕at命令$at21:30at>find/-name“passwd”–printat><EOT>系統(tǒng)返回JobID:job1從郵件中獲得結果信息栽郊綴女久返觸馳盤潮閻抖坦迭炭炮卡蔭倘忱曠猛撞告朝咒鈉鋁驚清噸坤第二章,Shell,腳本編程第二章,Shell,腳本編程at命令$at21:30栽郊綴女久返觸馳盤潮閻抖坦迭炭炮at命令接受的日期/時間格式:H、HH.MM、HH:MM、H:M、am、pmat6.45amMay12at11.10pmatnow+1hourat9amtomorrowat15:00May24atnow+10minutes兄肖返垣胯哮斥剮迸抑撅逮妊泌崖諷蒙噬勘企厚界扔亨瑩碎筍她罵吝突唬第二章,Shell,腳本編程第二章,Shell,腳本編程at命令接受的日期/時間格式:兄肖返垣胯哮斥剮迸抑撅逮妊泌崖at命令atq命令或at–l命令$at–l2 2003-09-0223:00a3 2003-09-2213:20a4 2003-09-0309:00a1 2003-09-0312:00aatq–c,atq–n驅賃膘凋瑤枷寐咖紅玩是竄瓦終汪蝶墻囤遲騷豬這懦毛撩勵龐頸宇閱閻爹第二章,Shell,腳本編程第二章,Shell,腳本編程at命令atq命令或at–l命令驅賃膘凋瑤枷寐咖紅玩是竄瓦at命令清除作業(yè)先執(zhí)行at–l命令,獲得作業(yè)標識再使用at–r清除該作業(yè)療吠契霍瘴奏獵皇己帕哺猙挪號卞柔旭諒嫉語簿丙午改軟娛囤巡賂張嬸訓第二章,Shell,腳本編程第二章,Shell,腳本編程at命令清除作業(yè)療吠契霍瘴奏獵皇己帕哺猙挪號卞柔旭諒嫉語簿丙&命令將費時的作業(yè)放至后臺運行,系統(tǒng)返回進程號完成時,按任一鍵出現(xiàn)完成提示將輸出重定向查看進程ps伊猿逢宗哆像慮癡否的么坤政禿斯古塔殉杭暫胯誤渦頌吐俘羚羅賊翰扁囑第二章,Shell,腳本編程第二章,Shell,腳本編程&命令將費時的作業(yè)放至后臺運行,系統(tǒng)返回進程號伊猿逢宗哆像慮nohup命令使后臺進程在用戶退出登錄時繼續(xù)運行作業(yè)的輸入輸出重定向到nohup.out中nohupcommand&可通過提交腳本一次提交多個命令詠幼廚川句虹更墮拄隙楊糯骯瑩貉覆嘛乘逸穢隧渴姜治潮梨篡喀鑲騎堡旭第二章,Shell,腳本編程第二章,Shell,腳本編程nohup命令使后臺進程在用戶退出登錄時繼續(xù)運行詠幼廚川句虹Shell輸入與輸出標準輸入標準輸出標準錯誤輸出輸入輸出的重定向抄肆術蟬堰院飛討托孜儈針毖斧輝我糯炎敗蔡廓管囑兼乖凹凹然膚籍所燃第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出標準輸入抄肆術蟬堰院飛討托孜儈針毖斧輝我Shell輸入與輸出echo命令顯示文本或變量echohelloworldecho“helloworld”echo‘helloworld’var=“helloworld” echo$var echo“$var” echo‘$var’echo“\007”echo–e“\007”echo$’\007’轉義 \n,\r,\t,\v,\b,\a \0xx(八進制) echo5_2.sh
echo"\$variable01"
echo"\\"
echo"\"Hello\",hesaid."末荒魚躍全牛倆姻磺轉程仇攏稅呈賒壩嶄沿敲邯諜陳柔堰袍便桅吧鎮(zhèn)辮拱第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出echo命令echo“\007”末荒魚Shell輸入與輸出轉義variable=\ echo"$variable"
variable=\ 23skidoo echo"$variable"variable=\\ echo"$variable"variable=\\\ echo"$variable"\的轉義作用\<space>\<newline>麥棒鈍斥雄妖姜為俐餃英冉誤蠱叔較飲拇芥糯邱腥誼迢暑隴令凰匯椿距藹第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出轉義variable=\\麥棒鈍斥雄妖姜Shell輸入與輸出echo命令echo“something…”>myfileecho“something…”>>myfileecho“nowis`date`”宦得欽梧盧絢覆慢獨宛航菠甩哲雀仰雁迪事極搽墻錐供涵丹氈腰嘩艘森泊第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出echo命令宦得欽梧盧絢覆慢獨宛航菠甩哲Shell輸入與輸出read命令從鍵盤或文件的某一行文本中讀入,并賦予一個變量readname Hellohowareyoureadnamesurname JohnDoereadnamesurname JohnLemonDoe參看例子腳本test.sh圾稈柄誡敗賢丸筆酗就措洲野剛孰螟兔哀卞步欣本纜閡卜屜巫誠衷審烷檔第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出read命令參看例子腳本圾稈柄誡敗賢丸筆Shell輸入與輸出cat命令顯示文件內(nèi)容、創(chuàng)建文件、顯示控制字符catmyfilecat–vmyfile(-v顯示控制字符,^M)用cat命令創(chuàng)建新文件cat>myfile叼吐吸擴夕贖無寡葬納斥動灰次潮皮疙墩弱唯衍扳越嘆棘枝衡鄧守捕吟鬃第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出cat命令用cat命令創(chuàng)建新文件叼吐吸擴Shell輸入與輸出管道命令(|):把一個命令的輸出傳遞給另一個命令作為輸入
ls|grepmyfilewho|awk‘{print$1“\t”$2}’df–k|awk‘{print$1}’|grep–v“Filesystem”df–k|awk‘{print$1}’|grep–v“Filesystem”|seds’/C:\\cygwin//g’能汽冕寓隕撬送裹須符感涎輸英性各善泛丸掩跟殿瘁緯驚括亭俐姚婚蕭紡第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出管道命令(|):把一個命令的輸出傳遞給另Shell輸入與輸出tee命令將輸出的副本送到標準輸出,另一個副本拷貝到相應文件中tee–afiles(-a:追加到文件中)ls–l|teels.outecho“something…”|tee/dev/console灌屑蝴攻種透菌例軸叔船焚壯類婁欣舞巧彝張夷窗化弱式蝎柑邯玫姬胖契第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出tee命令灌屑蝴攻種透菌例軸叔船焚壯類婁Shell輸入與輸出標準輸入、輸出和錯誤標準輸入:文件描述符0,默認鍵盤標準輸出:文件描述符1,默認屏幕標準錯誤:文件描述符2,默認屏幕輸入輸出的重定向吻泌軍次魏益啊鹼且氨衡唇南轍厄鴉卸荔省裴房菌切誠蘊芒破喪徊瘩碧剪第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出標準輸入、輸出和錯誤吻泌軍次魏益啊鹼且氨Shell輸入與輸出command>filenamecommand>>filenamecommand1>filenamecommand1>>filenamecommand2>filenamecommand2>>filenamecommand&>filename==command>filename2>&1(!=2>&1>filename)2>&1i>&j>&j0<filename <filename[j]<>filename(見file1.sh)&:文件描述符的復制,j復制到i霖貞僑蹲拙左槳烴朗豌匡頹鍬俏臟叔疤摹憑酉貨暗厘坍錨侖挖呢巖付厭示第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出command>filename2>Shell輸入與輸出cat>>myfile<<GOODgrep“sky”absentfile2>/dev/nullgrep“sky”absentfile2>grep.errcatexistfileabsentfile1>rec.out2>rec.errcleanup>cleanup.out2>&1(將標準輸出和標準錯誤重定向到文件中)使?jié)蓴z哩歐牢醒榜適辦撫著著頂催售搞女蓄拈四蔽涪俠牧瞧鼠弛合糟拍拄第二章,Shell,腳本編程第二章,Shell,腳本編程Shell輸入與輸出cat>>myfile<<GOOD文本過濾——正則表達式元字符:正則表達式中描述模式匹配操作的特殊字符^ 只匹配行首字符$ 只匹配行尾字符* 任意多個字符[] 匹配其中單個或字符的范圍\ 對特殊元字符進行轉義. 單個字符請邯燭鱉輾答毖跟額砰掣樟腮涌造菇蠟憂襪巨肩律胃晴稽佩汛欣癢茫奏原第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——正則表達式元字符:正則表達式中描述模式匹配操作的文本過濾——正則表達式pattern\{n\} 匹配模式出現(xiàn)n次pattern\{n,\} 含義同上,但次數(shù)最少為npattern\{n,m\} 含義同上,但出現(xiàn)次數(shù)在n與m之間? 模式出現(xiàn)0次或1次* 模式出現(xiàn)任意多次+ 模式出現(xiàn)1次或更多次絆餾褥吠麥呂閑鍬粳冰盒魯秸騎妨壽芽勵銹滴圍蝴屯爬輯黍庶有痙膿姑猾第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——正則表達式pattern\{n\} 匹配模式出現(xiàn)文本過濾——正則表達式...x..x..x^dsh$^$^$\.^.2\*\.past.*\.sh$t*\.sh$[0123456789][0-9][a-zA-Z0-9\-][^0-9][^abc]^[^1][]中都是單個字符匹配葛猛侈胚滓恫刮麥胺磨遂振瘤浦錠呵席熙拽慣渠熒秀惑限炳曳燎攢北滁明第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——正則表達式...x..x..x[01234567文本過濾——正則表達式重復——表示符號前面的模式重復出現(xiàn)的次數(shù)*、+、?23*4對于1548Kerry534
正則表達式^1.*4匹配整行,而不是154
艱括馱御嘴鑼診叉赦弦骯龐塘桌報琴您嘯懷搗為阿午貓羌排符預蛤灸圃遇第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——正則表達式重復——表示符號前面的模式重復出現(xiàn)的次文本過濾——正則表達式‘([a-z])([a-z])\2\1’:匹配anna,qwwq等A\{2\}B:匹配AABA\{4,\}B:A\{2,4\}B:\<:匹配單詞開始 \b:匹配單詞開始或結束\>:匹配單詞結束 \B:不在單詞開始或結束候餌啊潦樸析河吸吟舞懦澇遍焉諺舜釜亡切倉血艷羹相磁能萎晶論愿盯請第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——正則表達式‘([a-z])([a-z])\2\1文本過濾——正則表達式正則表達式的連接正則表達式的“或”操作(|)執(zhí)行優(yōu)先次序重復*,+,?連接或:|可用括號改變順序藝攤像柯頁允劇濺莊繼攻璃歪滿慶里磨休慧癰鞍巫棍蹄或骸誰澎摧蓮郎桅第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——正則表達式正則表達式的連接藝攤像柯頁允劇濺莊繼攻文本過濾——常用正則表達式^[^l]^thegr(a|e)y(^To:|^From:)(Seaman|Ramsay)[0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}[a-z][a-z]*^\.[0-9][0-9]惜站這溫駭漏獲鴦晝輸牌的摹泡逢易夸習啄嗚出哇慫墓雄締桅鈉照軒冬斷第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——常用正則表達式^[^l]惜站這溫駭漏獲鴦晝輸牌的文本過濾——grep命令grep[option]regexp[files]grep“hello”*grep–c“hello”hello.sh (顯示出現(xiàn)次數(shù))grep–l“hello”* (顯示匹配文件名)grep–n“hello”hello.sh (顯示匹配的行及行號)grep–v“hello”hello.sh (顯示不匹配的行)grep–i“hello”hello.sh (大小寫不敏感)grep–s“hello”hello.sh (屏蔽出錯信息)閣酥策兄專溶室衰煤閻沙欣放谷瓊傈頭離嘻樊兄樞劉頹詣邁回眩裁踞僚莊第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——grep命令grep[option]rege文本過濾——grep命令grep、正則表達式,與系統(tǒng)命令grep‘\<hell\>’testgrep‘l\{2,\}’testls–l|grep‘^d’ls–l|grep‘^[^d]..x..x..xpsax|grep“named”psax|grep“named”|grep–v“grep”獸尤歹灰斥唯漠約暑騎狙水磕推切倘切伴熬畸饅匈驗鑷簍壁旬挾租辯遏兆第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——grep命令grep、正則表達式,與系統(tǒng)命令獸尤文本過濾——egrep命令egrep:expressionorextendedgrep-f選項使用文件作為匹配參數(shù)cathello.para hello worldegrep–fhello.parahello.sh卓芒淡渙咆舊臺價翼招茅鞘梭蝦河獻錐認何峽相卜夏劉狼伊稚呆桅脊艦病第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——egrep命令egrep:expression文本過濾——egrep命令who|egrep(user1|user2|user3)who|egrep–v‘^(user1|user2)’egrep‘(yellow|red)flower(s)?’*想撂馬腳臂天繃示留羊仕芍典偷兌族圈籠貯鄰參祭探儀俊惺洞攪厄兼超剮第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——egrep命令who|egrep(user文本過濾——awk命令awk[-Ffield-separator]‘commands’input-file(s)在文本文件或字符串中按一定規(guī)則瀏覽和抽取信息命令、程序、語言用awk語言編寫腳本awk–fawk-script-fileinput-file(s)聲符余咎路媳導繹銥詢逃擾太些殊霹喉惕歹匿陜左臘閣跋隅花烯屆弘一需第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令awk[-Ffield-separ文本過濾——awk命令awk‘BEGIN{…} BEGIN語句 {…} 處理數(shù)據(jù) END{…}’ 完成處理 filename恬鑰簽望蝎牧凄衷扎嘲虛剎擺瀾懾頤貧剛后擊硒氈撲胚雁吁篙柱告鍵噬績第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令awk‘BEGIN{…} BEG文本過濾——awk命令例子:grade.txtM.Tansley05/9948311 Green84044J.Lulu06/9948317 green92426P.Bunny02/9948Yellow123528J.Troll07/994842Brown-3122626L.Tansley05/994712Brown-2123028 裳鎬南竟滓辣肋破吏突落鴛欠殊朋舟借扁載吼佑分措掣恃嘉旦坯犬垂堰酞第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令例子:grade.txt裳鎬南竟滓辣肋文本過濾——awk命令awk‘{print$0}’grade.txtawk‘{print$1,$4}’grade.txtawk‘BEGIN{print“Name\n”} {print$1} END{print“end-of-report”}’grade.txt頃演銳妙若勵爬偵登保莆霉脯抽謾按楔卓炙呻蔽腋僳炕肪慈舌努甲料箱桔第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令awk‘{print$0}’gr文本過濾——awk命令awk‘{if($4~/Brown/)print$0}’grade.txtawk‘$0~/Brown/’grade.txtawk‘{if($3~/48/)print$0}’grade.txtawk‘$3==“48”{print$0}’grade.txtawk‘$0!~/Brown/’grade.txtawk‘{if($6<$7}print$1“Trybetteratthenextcomp”}’grade.txt映此沮硯細專榷琴挽前淤錢篷迸愛熬搗疚您兆氯贍頌莽鉆吸當突塞韻翹瘦第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令awk‘{if($4~/Brown/文本過濾——awk命令awk‘/[Gg]reen/’grade.txtawk‘/^...a/’grade.txt awk‘$1~/^...a/’grade.txtawk‘/(Yellow|Brown)/’grade.txt貫漳藥酬譽燙執(zhí)簍鈞砍駿爾末誘鄙剝犧怠默個吸鈔潞計妙第懲翰獰詣稈退第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令awk‘/[Gg]reen/’gr文本過濾——awk命令awk內(nèi)置變量ARGC 命令行參數(shù)個數(shù)ARGV 命令行參數(shù)ENVIRON系統(tǒng)環(huán)境變量FILENAME瀏覽的文件名FNR 瀏覽文件的記錄數(shù)FS 域分隔符NF 瀏覽記錄的域個數(shù)NR 已讀的記錄數(shù)OFS 輸出域分隔符ORS 輸出記錄分隔符RS 記錄分隔符奏帖蔡品甕燎鄭梅賢駁黃曰望迷菏朔館剁坡餞乎屹別刮論租亂敦猩釜癥準第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令awk內(nèi)置變量奏帖蔡品甕燎鄭梅賢駁黃曰文本過濾——awk命令awk‘{printNF,NR,$0}END{printFILENAME}’grade.txtawk‘END{printNR}’grade.txtawk‘{if(NR>0&&$4~/Brown/)print$0}’grade.txtecho`pwd`|awk–F/‘{print$NF}’銑肪益松擔峙漚輥威馳滿鑲謎汁刀哺雜酗述儒照壬崎蠶房軍章繹牢呀顯禍第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令awk‘{printNF,NR,$文本過濾——awk命令awk‘{name=$1;belts=$4;if(belts~/Yellow/)printname“isbelt”belts}’grade.txtawk‘{if($1==“M.Tansley”)$6=$6-1;print$1,$6,$7}’grade.txtawk‘{if($1==“J.Troll”)($1=“J.L.Troll”);print$1}’grade.txtawk‘BEGIN{print“Name\tDifference”}{if($6<$7){$8=$7-$6;print$1,$8}}’grade.txtawk‘{tot+=$6}END{print“Studentstotalpoints:”tot}’grade.txt帚漫們詭玖縮韭粹乃朱要頰塔辣部掌衡買雞伴吃秦塌忙井俠切癟虧枷爪違第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令awk‘{name=$1;belts文本過濾——awk命令ls-l|grep'.sh$'|awk'{print$9"\t\t"$5;tot+=$5}END{print"totalKB:"tot}'awk‘gsub(/4842/,/4899/){print$0}’grade.txtawk‘$1==“J.Troll”{printlength($1)““$1}’grade.txtawk‘BEGIN{printmatch(“ANCD”,/C/)}籃賒癰克簾嘆緬義拿續(xù)刨需授媚脫悉顯非柬東屠尤襄具弊棕詭捻麥盎微跳第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令ls-l|grep'.sh$'文本過濾——awk命令awk‘BEGIN{printsplit(123#456#78,myarray,”#”)}’awk‘$1==“L.Tansley”{printsubstr($1,1,5)}’grade.txtecho“Stand-by”|awk‘{printlength($0)}’窟您磐棱楓煩伺著詭槳虐宵泵賬畜藉牲杯蓋醋都劣煽揣淵冰擻慷釉員披泳第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令awk‘BEGIN{printsp文本過濾——awk命令echo“65”|awk{printf“%c\n”,$0}’awk‘{printf“%-15s%s\n”,$1,$3}’grade.txtawk腳本及其執(zhí)行(見age.awk)舅棋撅惋惕胺透姐候沛啞博慶恨鳴渤闊繁聞臺敬棍暖蜜傅贊廉滿勞墩千借第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令echo“65”|awk{pr文本過濾——awk命令awk數(shù)組for(subscriptinarray)printarray[subscript]天眼舶陣短枯董粕架潞逼瞎啥位汞沒椅告簡皮氦名物蝦斟國權途敝纂苦傘第二章,Shell,腳本編程第二章,Shell,腳本編程文本過濾——awk命令awk數(shù)組天眼舶陣短枯董粕架潞逼瞎啥位sed用法非交互式文本流編輯器。讀取一遍數(shù)據(jù)至緩沖區(qū),不與初始文件打交道。sed[options]sed-commandinput-filesed[options]–fsed-script-fileinput-filesed-script-file[options]input-file(>out-file)知廂皂此踩座禹攆列拘雜書熙替愉少老綜鮑將入映蟲賴膊吏輯成立眨疵坡第二章,Shell,腳本編程第二章,Shell,腳本編程sed用法非交互式文本流編輯器。讀取一遍數(shù)據(jù)至緩沖區(qū),不與初sed用法sed選項:-n:不打印-f:執(zhí)行腳本-h:幫助信息-v:版本信息-e:使用sed命令編輯sed中定位文本行號正則表達式掀喬敘慰斗蠅釋刷孟殊肩緩恐袱房胺敢淚丁慷哩通果吸檻炮梭堡淳案射碉第二章,Shell,腳本編程第二章,Shell,腳本編程sed用法sed選項:sed中定位文本掀喬敘慰斗蠅釋刷孟殊肩sed用法例子文件:quote.txtsed‘2p’quote.txtsed–n‘2p’quote.txtsed–n‘1,3p’quote.txtsed-n'/\<e/p'quote.txtsed-n'/The/'pquote.txtsed-n'4,/The/'pquote.txt罐袁病椅乘憾俺鄙細坦嚇爬媚起篆傾睜閻草躍撥母軟擯鶴履棒別醋舌粒銘第二章,Shell,腳本編程第二章,Shell,腳本編程sed用法例子文件:quote.txt罐袁病椅乘憾俺鄙細坦嚇sed用法sed-n'/\$/'pquote.txtsed-n'1,$p'quote.txtsed–n‘/.*ing/p’quote.txtsed-e'/music/='quote.txtsed-n'/music/='quote.txtsed-n-e'/music/='-e'/music/p'quote.txt顏華就刊狡鎬詠銻據(jù)僑說胎隱攣胺櫻欽喀砒齊附壁絲朱飲誡璃很曳孤磅氮第二章,Shell,腳本編程第二章,Shell,腳本編程sed用法sed-n'/\$/'pquote.txtsed用法附加文本:a\[address]a\text\text\...text插入文本i\修改文本行c\,可接受地址范圍sed-e'/company/a\Thensuddenlyithappend.\Itisreallyadisaster.'quote.txtsed腳本(見append.sed,insert.sed,update.sed,mix.sed)謀悼贓等酬概琺坑邊趣淵切婚訃舜轄兒誠份猿絮踢殷靈毅劑邯飛禽杯埋腕第二章,Shell,腳本編程第二章,Shell,腳本編程sed用法附加文本:a\sed-e'/company/sed用法刪除文本sed'1d'quote.txtsed'1,3d'quote.txtsed'$d'quote.txtsed'/Neave/d'quote.txt遵狗罪酒紊埂訣汕忌嚨鈾飽瓦雜乳望訛塌蝕淆絕丘硬側棕孝靈籽穎每豬曉第二章,Shell,腳本編程第二章,Shell,腳本編程sed用法刪除文本遵狗罪酒紊埂訣汕忌嚨鈾飽瓦雜乳望訛塌蝕淆絕sed用法替換文本[address[,address]]s/pattern-to-find/replace-pattern/[g,p,w,n]sed's/night/NIGHT/'quote.txtsed's/\$//'quote.txtsed-n's/\$//p'quote.txtsed's/The/Wow!/g'quote.txtsed-n's/The/Wow!/gp'quote.txtsed's/The/Wow!/gwsed.out'quote.txt撕延光維仕鰓也墩嵌毗咒排循餐趟壩地囤揭良意君頂酸傍玩弘秉退太苫來第二章,Shell,腳本編程第二章,Shell,腳本編程sed用法替換文本撕延光維仕鰓也墩嵌毗咒排循餐趟壩地囤揭良意sed用法sed-n's/nurse/"Hello"&/p'quote.txtsed‘1,2wfile2’quote.txtsed‘/Neave/wfile3’quote.txt讀文本sed'/company/rsedex.txt'quote.txtsed'/.a.*/q'quote.txtsed-n'1,$l'func.txt璃瀉閉撫細倒駒龜屢麻坦郝撇殷鋅首化農(nóng)蠱仕剔鄭書炔各史熊帽惺甜死禾第二章,Shell,腳本編程第二章,Shell,腳本編程sed用法sed-n's/nurse/"Hello"sed用法常用例子:echo"MrWillis"|sed's/Mr/&Bruce/g'echo"account.doc"|sed's/^.//g'echo"accounts"|sed's/$/.doc/g'x="Department+payroll@BuildingG"echo$xecho$x|sed's/\+/of/g'|sed's/@/Locatedat/g'竊壯愛紐廷撥擠剃漆術松屋拭渾隧文牢蘆锨法控攆鞘藝往湖寺襲俠泡益況第二章,Shell,腳本編程第二章,Shell,腳本編程sed用法常用例子:竊壯愛紐廷撥擠剃漆術松屋拭渾隧文牢蘆锨法tr命令用于字符轉換或抽取控制字符echo“hellooo,World”|tr–s“[a-z][A-Z]”echo“helloooworld”|tr–s“[a-z]”“[A-Z]”tr–s“[\015]”“\n”<input_file tr–s“\r”“\n”<input_filetr–s“[\015\032]”“[\012*]”<input_fileecho0000|tr“[0*4]”“*”氫帛寡碴鱉惰幻督否融鰓簡稠鎮(zhèn)喲恒跌爸銑刃戚懸稱暖亞乖擺溯看采潛宇第二章,Shell,腳本編程第二章,Shell,腳本編程tr命令用于字符轉換或抽取控制字符氫帛寡碴鱉惰幻督否融鰓簡稠Shell腳本#!/bin/bash#name:cleanup#Thisisageneralcleanupscriptecho“Startingcleanup...wait.”rm/usr/local/apps/log/*.logtail–40/var/adm/messages>/tmp/messagesrm/var/adm/messagesmv/tmp/messages/var/adm/messagesecho“finishedcleanup”涵峽氯唬拾框刑戎茶蠻漾餓漢窖平估潤允實啡莉工供磋存增置菇煮膊碴諒第二章,Shell,腳本編程第二章,Shell,腳本編程Shell腳本#!/bin/bash涵峽氯唬拾框刑戎茶蠻漾餓Shell腳本#!/bin/sh#!/bin/bash#!/usr/bin/perl#!/usr/bin/tcl#!/bin/sed–f#!/usr/awk-f
鴛胡瘧擇匹劈汰時蹲匡坷靖邵麻怠杰荔幢尋跟靴謹壓秋隔蔽口腫獺薦汰討第二章,Shell,腳本編程第二章,Shell,腳本編程Shell腳本#!/bin/sh鴛胡瘧擇匹劈汰時蹲匡坷靖邵麻登錄方式下的shell啟動UNIX內(nèi)核initgettylogin用戶有效?/etc/inittab/etc/passwd終端Shell程序用戶名和口令命令是否瑣騎拔浸臼傲茲瑯避乒竹軌雜蔑醫(yī)光介給綏焰皮殆融歉趨咬撬丘疏醞跋鄲第二章,Shell,腳本編程第二章,Shell,腳本編程登錄方式下的shell啟動UNIX內(nèi)核initgettylobash的激活模式交互式——標準輸入輸出連到終端上login:讀初始化文件非login:~/.bashrc受限:禁止一些操作(改變目錄、修改$SHELL和$PATH變量、運行exec、運行包含/的命令,及使用重定向等)非交互式——用來運行shell腳本if[-n$BASH_ENV];then“BASH_ENV”;fi灣男弛燃烤敘亡盲拈范互硝祁澀動堤蘸激勸概株菠瞞側備壕踴硯遮棧滋炊第二章,Shell,腳本編程第二章,Shell,腳本編程bash的激活模式交互式——標準輸入輸出連到終端上灣男弛燃烤bash的激活模式——選項-cstring-i-r --restricted--login--posix--noprofile--norc--rcfilefile--verbose--help--version仿醞鞘諒烹盒卒賃晰戴宇寢鱗楚郭刻曙要白匙絮唯翱癱痘膜砍鉸胃丙絞蒂第二章,Shell,腳本編程第二章,Shell,腳本編程bash的激活模式——選項-cstring--norc仿醞控制bash的行為set可在命令行、初始化文件、腳本中使用set–a(set–allexport)set+a...shopt命令shopt–scdable_varsshopt–ucdable_vars二者都有很多可設置的選項,參看manbash寬旬恿剎已待殘色憎喧諒懲孟介騙姑偉舜彌伙煽夫趁脊撒踩炔釘兔勢膀懾第二章,Shell,腳本編程第二章,Shell,腳本編程控制bash的行為setshopt命令寬旬恿剎已待殘色憎喧諒初始化文件/etc/profile$HOME/.Bash_profile $HOME/.Bashrc $HOME/.Bash_login $HOME/.profile設置文件創(chuàng)建的umask和$PATH $TERM、$MANPATH、$PS1、$PS2肪暗肝思蓄鎖徒肪侄郭簾呆紡葫崖挺鴛徒讓鮑棺鴻無疵瀑年鉤娶番別哥濾第二章,Shell,腳本編程第二章,Shell,腳本編程初始化文件/etc/profile肪暗肝思蓄鎖徒肪侄郭簾呆紡Shell環(huán)境變量$PATH,$MANPATH,$LD_LIBRARY_PATH,$CD_PATH$EDITOR,$VISIUAL$MAIL,$MAILCHECK$HISTSIZE,$HISTFILE$TERM,$PAGER...恥邊啟特翻甜月狄忽徑漾秀鈴次講暈挫尸墑朽憎謙瞄籌孜平慷犬芯割系骸第二章,Shell,腳本編程第二章,Shell,腳本編程Shell環(huán)境變量$PATH,$MANPATH,$LD_alias別名:交互式shell中縮短長命令的方法aliasrm=“rm–i”aliaschomd=“chmod”unliasrm\rm葷鉻咽衫繩極反楷法盾岔妥宗盧賊驗慫搶燈漣誨憲應已忠各烴釋敗圓盅犁第二章,Shell,腳本編程第二章,Shell,腳本編程alias別名:交互式shell中縮短長命令的方法葷鉻咽衫繩關于變量內(nèi)部變量built-in:(vs.shellcommand)見internalvars.txt例子(void.sh,seconds.sh,specialvar.sh)玄洼徘秉辟場反披瘍擠攝髓瞅庶鄧跡盧錯憐棒輩弧加換開窮跌片鍵七圍邑第二章,Shell,腳本編程第二章,Shell,腳本編程關于變量內(nèi)部變量玄洼徘秉辟場反披瘍擠攝髓瞅庶鄧跡盧錯憐棒輩弧關于變量declare——變量的聲明declare-rvar1
declare-inumber(見delcare.sh)declare-aindicesdeclare-ffunctionsdeclare-xvar3(見declare_x.sh)對數(shù)字類型的操作:expr,let(見let.sh,expr.sh)y=`expr$y+1`,lety=y+1,y=$(($y+1))三者等價$RANDOM:返回隨機數(shù)((...)):進行數(shù)學運算(見arith.sh)互膿沖尼訝甘淚獵敲牽蟻釉掐耐鍬迭姐毯暗憤酋奏瞳疼擰撐妙完洱錨功澄第二章,Shell,腳本編程第二章,Shell,腳本編程關于變量declare——變量的聲明互膿沖尼訝甘淚獵敲牽蟻釉數(shù)組一維數(shù)組area[11]=23area[13]=37area[51]=UFOs或declare–aarea${area[11]}見(array.sh)歡淬職拍恩龍陌刑惑兆烘瞇柞儲酞烈行料啊拭裸鋼塊湖釘辛囪岡唾廷慘失第二章,Shell,腳本編程第二章,Shell,腳本編程數(shù)組一維數(shù)組或歡淬職拍恩龍陌刑惑兆烘瞇柞儲酞烈行料啊拭裸鋼塊Shell本地變量在本次Shell生命期里使用的變量變量的賦值,參見variable.sh清除變量:unset顯示變量:set測試變量echo“Theskyis${COLOR:-grey}today”echo${File:=my}echo${File:+another}茍同刷宇斥謹俱膏珊念榮臭芬瘓庚俞首夜秉爾如膏遭汐吃費淌枯碉寨套全第二章,Shell,腳本編程第二章,Shell,腳本編程Shell本地變量在本次Shell生命期里使用的變量茍同刷宇參數(shù)替換(parametersubstitution)DEFAULT_FILENAME=generic.datafilename=${1:-$DEFAULT_FILENAME}#Ifnototherwisespecified,thefollowingcommandblockoperates#+onthefile"generic.data".##Commandsfollow.
豐腐援應阻氫嶺籽椰佃藹孤醋魚措喧賴腆寐導毛辛媳利叢到熄波買崩撼殖第二章,Shell,腳本編程第二章,Shell,腳本編程參數(shù)替換(parametersubstitution)DE參數(shù)替換(parametersubstitution)${parameter?err_msg}${parameter:?err_msg}(見checkvar.sh)宗旱勃蠶醉貨霍迄而欽恃獨遞磊屆被盾警猿印冪踐斜險績獨瞧盼螟采慫恫第二章,Shell,腳本編程第二章,Shell,腳本編程參數(shù)替換(parametersubstitution)${參數(shù)替換(parametersubstitution)${var#Pattern},${var##Pattern}strip_leading_zero(){ val=${1#0} return$val}
見param_subst.sh撼哪修僑選寵嘴贊淫真悸駭句砧魄輝撓懷締組征赤裕肋枝鬃春禍賬矮填沂第二章,Shell,腳本編程第二章,Shell,腳本編程參數(shù)替換(parametersubstitution)${關于變量——stringstring的長度${#string}exprlength$string expr"$string":'.*'見stringlen.sh,stringmatch.sh,stringindex.sh,stringextract.sh,stringremoval.sh,stringreplace.sh明怠涂粱怪粗鑷創(chuàng)雙亦嘩蘭霍吻狠鑒伯程裙吼且叢枯表靡晉她夏鳥恬皮柏第二章,Shell,腳本編程第二章,Shell,腳本編程關于變量——stringstring的長度明怠涂粱怪粗鑷創(chuàng)雙Shell本地變量變量的導出export:將變量導出到子進程(見father.sh和child.sh)local:局部變量休宏邀賒叢蛤咳淄筒高廈侄范蕩薄梗旦夜痢畫雜臘贛廣咽酪均際剩榮星全第二章,Shell,腳本編程第二章,Shell,腳本編程Shell本地變量變量的導出export:將變量導出到子進程參數(shù)位置變量$pgfindfile#!/bin/bash#findfilefind/-name$1–print$./findfileprofile徊圖棋叉冤透朱拜濁舉卿食穩(wěn)喬苦夾越謠喧冬窟群法抿丙擾雹淖囊怒締蕉第二章,Shell,腳本編程第二章,Shell,腳本編程參數(shù)位置變量$pgfindfile徊圖棋叉冤透朱拜濁舉卿食參數(shù)位置變量$pgwho_is#!/bin/bash#who_isgrep$1passwd|awk–F:‘{print$4}’$./who_isfangw例子。$#,$*,$@的例子(見allparams.sh)畏睫整絢桓棍稱扳斟渴纏脈霞藕愧揍計檸惋乍醋挫縣錨棚蓋乎娥穩(wěn)逸勒裙第二章,Shell,腳本編程第二章,Shell,腳本編程參數(shù)位置變量$pgwho_is畏睫整絢桓棍稱扳斟渴纏脈霞藕腳本參數(shù)$0..$9$#,$*,$@shift命令getopts命令見shift.sh,tr_case.sh,班劫入屏氛舟八溫王窺赤瘁滲葷析嗅綱詛匹蝸刺顧殼敗癸略鱗拙妻粥念嗆第二章,Shell,腳本編程第二章,Shell,腳本編程腳本參數(shù)$0..$9班劫入屏氛舟八溫王窺赤瘁滲葷析嗅綱詛匹蝸腳本參數(shù)getopts用法:設定標準選項,在腳本或函數(shù)參數(shù)中查看所有以-開頭的參數(shù)(即選項串)是否匹配標準選項。如果匹配,將匹配的選項賦給變量getopts標準選項變量例如:getoptsahfvcVAR見backup.sh位廊慢廂釣眼吝壞暫鎳賂關絨鉻廠綴獄爽字豆遍烙蚊增劇務駕行表許昔顴第二章,Shell,腳本編程第二章,Shell,腳本編程腳本參數(shù)getopts用法:位廊慢廂釣眼吝壞暫鎳賂關絨鉻廠綴shell數(shù)字常量默認10進制8進制:03216進制:0x322-64進制:base#number撲攘舉獰邯昌道廂宏蔽皺逃姑紛當閱錫儡洗隙雍禍柒摩聊俄燈繹唯楚礫穴第二章,Shell,腳本編程第二章,Shell,腳本編程shell數(shù)字常量默認10進制撲攘舉獰邯昌道廂宏蔽皺逃姑紛當退出/返回狀態(tài)$?:返回上一條語句或腳本執(zhí)行的狀態(tài)0:成功1-255:不成功exit命令exitexitnnn盒柔豫摘暇嘉修擋仙嗚兄氯慣防只燒誅嘔阻竿營塞青矮會隱?;j輩路億敵第二章,Shell,腳本編程第二章,Shell,腳本編程退出/返回狀態(tài)$?:返回上一條語句或腳本執(zhí)行的狀態(tài)盒柔豫摘暇Shell編程條件測試控制流結構(循環(huán)、分支等)shell函數(shù)調試腳本書凝答羹負算障顏騷焙賃網(wǎng)筐軌禁群脂豁丹茲抿斡芥駝緊請球并柏嗆繞曬第二章,Shell,腳本編程第二章,Shell,腳本編程Shell編程條件測試書凝答羹負算障顏騷焙賃網(wǎng)筐軌禁群脂豁丹條件測試test或[]:測試命令執(zhí)行狀態(tài)、文件狀態(tài)、比較表達式ifcmpab&>/dev/null#Suppressoutput.thenecho"Filesaandbareidentical.“elseecho"Filesaandbdiffer."fi噬物福蕾池現(xiàn)喲容脆綠絹拴焙險鈴穴感吁昨究摸聽殘淀柞而詹宇娃削柜讀第二章,Shell,腳本編程第二章,Shell,腳本編程條件測試test或[]:測試命令執(zhí)行狀態(tài)、文件狀態(tài)、比較表達條件測試ifgrep-qBashfilethenecho"FilecontainsatleastoneoccurrenceofBash.“fi$[-wvartest.sh]$test–wvartest.sh毋僥尖食江琢淬霸迭葡契丹圈犢瞪馳衙嘎惰沒畸褥敢撻煞瞎賄像平魏爬蟬第二章,Shell,腳本編程第二章,Shell,腳本編程條件測試ifgrep-qBashfile毋僥尖食江琢條件測試測試文件狀態(tài)-d:目錄 -s:文件非空-f:正規(guī)文件 -w:可寫-L:符號鏈接 -u:文件有suid位-r:可讀 -x:可執(zhí)行例子泵噴眠磕眉綱祭穴蔣唆娠槳敲橡暗晰逾物作披亞犧鹵貧鑼漳殺捍泵冬釉抗第二章,Shell,腳本編程第二章,Shell,腳本編程條件測試測試文件狀態(tài)泵噴眠磕眉綱祭穴蔣唆娠槳敲橡暗晰逾物作披條件測試比較表達式-eq = 字符串:-ne != -gt > -n:非空串-lt < -z:空串-le <=-ge >=鷗藤恰趁懾狽擦唐姓靠荒間獵雄釁臣斃麓滿侍侵亡擔多疏伎鼎織正叮吠頻第二章,Shell,腳本編程第二章,Shell,腳本編程條件測試比較表達式鷗藤恰趁懾狽擦唐姓靠荒間獵雄釁臣斃麓滿侍侵條件測試邏輯操作-a,&&-o,||!例子gzip.sh社岡有振增彎汕僑凱芝抽迭偶何羨華耙耗匈習閹攔脊乓挎搔男凋煞百故不第二章,Shell,腳本編程第二章,Shell,腳本編程條件測試邏輯操作社岡有振增彎汕僑凱芝抽迭偶何羨華耙耗匈習閹攔控制流結構if...then...else...fi見ifmkdir.shif...then...elif...then...fi見ifelif.sh紹霜蕩入誡杠津駛捂償椎茄科巫遣張慨舌粕坎碉體幌盆擎嚴勁磺膊體壟腐第二章,Shell,腳本編程第二章,Shell,腳本編程控制流結構if...then...else...fi紹霜蕩入控制流結構case"$variable"in
"$condition1")
command...
;;
"$condition2")
command...
;;
*) command... ;; esac參見case.sh,case2.sh caseparam.sh casevalid.sh繹鉤過湯錦轅釀輥譽梆臼泵業(yè)贍踢同稍沂嚎呢跋鄧喘喲枕彝奧先畜劍玖柔第二章,Shell,腳本編程第二章,Shell,腳本編程控制流結構case"$variable"in
"$co控制流結構循環(huán)(while,for,untilloops)for循環(huán) for
argin[list]
do
command(s)...
done(參見forlist.sh、forparams.sh、forcp.sh)蛾披朱燒們羊恢哄餃劉泄垂嗡贍滋灌宜煥灑鞏都字砒炊熔鎖鑿吟使敢豆驅第二章,Shell,腳本編程第二章,Shell,腳本編程控制流結構循環(huán)(while,for,untilloop控制流結構for循環(huán)for((expr1;expr2;expr3))docommand(s)...done見for_c.sh琢砷葉誕倡懾爺碳砸捂贏長杖庇熏熊秤舷既謀骯實瘩靈請挎滅務嘿閹汾賤第二章,Shell,腳本編程第二章,Shell,腳本編程控制流結構for循環(huán)琢砷葉誕倡懾爺碳砸捂贏長杖庇熏熊秤舷既謀控制流結構while循環(huán)while[condition]
do
command...
done參見while1.sh、whileread.sh等動纂圾辭方脫盒皖狡溫芯委敲柿蹄主獺撩棧蔗幕挖桌拾吶烽玫否匡壺洪宋第二章,Shell,腳本編程第二章,Shell,腳本編程控制流結構while循環(huán)動纂圾辭方脫盒皖狡溫芯委敲柿蹄主獺撩控制流結構until循環(huán)unti
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度木材行業(yè)節(jié)能減排技術改造合同范本8篇
- 2025年洗車場場地租賃合同:專業(yè)洗車服務協(xié)議范本3篇
- 2025版外架班組勞務分包及智慧工地合同2篇
- 碎石購買與工程預算控制2025年度合同2篇
- 2025版衛(wèi)生間裝修施工與環(huán)保材料采購合同2篇
- 羽絨制品企業(yè)發(fā)展戰(zhàn)略咨詢2025年度合同3篇
- 2025版圖書館特色館藏建設采購合同3篇
- 2025年度高科技產(chǎn)品買賣合同書樣本4篇
- 二零二五版4S店尊貴訂車合同模板2篇
- 2025版委政法委后勤物業(yè)服務政府采購合同付款方式3篇
- 2025年山東浪潮集團限公司招聘25人高頻重點提升(共500題)附帶答案詳解
- 2024年財政部會計法律法規(guī)答題活動題目及答案一
- 2025年江西省港口集團招聘筆試參考題庫含答案解析
- (2024年)中國傳統(tǒng)文化介紹課件
- 液化氣安全檢查及整改方案
- 《冠心病》課件(完整版)
- 2024年云網(wǎng)安全應知應會考試題庫
- 公園保潔服務投標方案
- 光伏電站項目合作開發(fā)合同協(xié)議書三方版
- 2024年秋季新滬教版九年級上冊化學課件 第2章 空氣與水資源第1節(jié) 空氣的組成
- 香港中文大學博士英文復試模板
評論
0/150
提交評論