




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
4.1shell的工作原理 4.2shell編程中的各種命令
4.2.1shell腳本的建立 4.2.2通配符*和補全命令Tab 4.2.3歷史命令history 4.2.4大括號{} 第4章shell編程主要內容4.3數(shù)學表達式的使用
4.3.1變量取值$(普通變量和環(huán)境變量) 4.3.2單雙引號””、’’和反斜線 4.3.3命令替換$() 4.3.4表達式求值$(())、expr()和反引號``4.4控制結構語句
4.4.1順序結構的語句 4.4.2選擇結構的語句 4.4.3循環(huán)結構的語句 4.1shell的工作原理1.shell是什么?在linux/Unix中的命令解釋器就是shell。2.shell有哪些?Bournshell,Cshell,Bounrn-Againshell,簡稱bash3.shell程序存放在哪里?系統(tǒng)中所有shell都存放在/etc/shells文件中,可以用cat命令來查看所有的shell內核。4.怎么來確定當前登錄用戶的shell類型呢?參見例4.1–例4.6,linux終端運行演示4.2shell編程中的各種命令4.2.1shell腳本的建立Shell腳本程序是指放在一個文件的一系列l(wèi)inux命令和實用程序,在文本編輯器中編寫完畢即可立即運行。編寫時可以使用vi、gedit、emacs等各種文本編輯器,每一行可以是一條linux命令,也可以是一個shell語句。在運行時shell腳本中的命令一個接一個的運行并輸出結果。例4.7shell腳本程序的編寫過程1.輸入命令
打開gedit開始輸入shell代碼,如圖4.1所示。2.保存,退出gedit,在終端輸入chmodu+xshl47,給當前用戶增加執(zhí)行腳本shl47的權限。3.執(zhí)行,shell腳本是解釋型編譯,所以直接輸入腳本名執(zhí)行即可。如例4.8所示。4.2.2通配符*和補全命令Tab1.常用的通配符通配符也稱元字符,是描述其他數(shù)據(jù)的字符,Linux操作系統(tǒng)提供的主要通配符如下:*:將匹配0個(即空白)或多個字符?:將匹配任何一個字符而且只能是一個字符[a-z]:將匹配字符a~z范圍內的所有字符[^a-z]:將匹配所有字符但是a~z范圍內的字符除外[xyz]:將匹配方括號中的任意一個字符[^xyz]:將匹配不包括方括號中的字符的所有字符元字符的使用參見例4.9–例4.132.利用Tab鍵補齊命令行Linux有個命令自動補齊功能,在輸入命令時只需輸入文件或目錄名的前幾個字符,然后按TAB鍵,如無相重的,完整的文件名立即自動在命令行出現(xiàn);如有相重的,再按一下TAB鍵,系統(tǒng)會列出當前目錄下所有以這幾個字符開頭的名字。在命令行下,如果輸入字符m,再連續(xù)按兩次TAB鍵,則系統(tǒng)會列出所有以m開頭的命令。當在鍵盤上按Tab鍵時,如果光標在命令上,將補齊一個命令名;如果光標在參數(shù)上,將補齊一個文件名。tab鍵的補齊參見例4.14,例4.153.命令行中~符號的使用~符號表示當前用戶的家目錄,在命令中可以省略家目錄,只需寫出家目錄的下一級目錄名。例4.16顯示當前用戶shiephl家目錄下bakcup目錄中所有以sh開頭的文件4.2.3歷史命令history1.命令historyhistory列出用戶最近輸入過的命令,也包括輸入的錯誤命令,history命令顯示結果的最左邊是命令編號,可以使用命令號重新執(zhí)行所對應的命令。例4.17查看最近輸入的命令2.操作歷史命令的快捷鍵包括:上下箭頭鍵:在以前使用過的命令之間移動按Ctrl+R鍵:在命令的歷史記錄中搜尋一個命令用如下組合鍵:提取上一個命令最后的參數(shù),順序地按Esc+.鍵;同時按Alt+.鍵例4.20用Ctrl+R鍵搜尋一個命令4.2.4大括號{}在Linux中雖然文件名的后綴并不表示文件的打開方式,但我們?yōu)榱藚^(qū)分不同類型的文件或者為了便于記憶,我們還是會給文件添加后綴以示分類。如果我們的文件名有很相似的地方,利用大括號可以減輕工作負擔。例4.21用touch命令創(chuàng)建dog和wolf新文件例4.22創(chuàng)建三組文件程序運行演示4.3數(shù)學表達式的使用在Linux系統(tǒng)中bash變量的值是以字符串方式存儲。如果需要進行算術和邏輯操作,必須先轉換為整數(shù),得到運算結果后再轉換回字符串,以便正確地保存于shell變量中。其實所有的計算機編程語言都是這樣處理輸入的字符串和數(shù)值的,只不過高級語言把這個過程放在函數(shù)中了,低級語言如匯編語言需要程序員把這個轉換過程自己編程實現(xiàn)。bash提供了三種方法對數(shù)值數(shù)據(jù)進行算術運算:let命令
shell擴展$((expression))expr命令4.3.1變量取值$(普通變量和環(huán)境變量)1.shell環(huán)境變量shell變量是內存中一個命了名的臨時存儲區(qū),shell變量可以分為兩大類型:環(huán)境變量和用戶定義變量。環(huán)境變量用來定制你的shell的運行環(huán)境,保證shell命令的正確執(zhí)行,所有環(huán)境變量會傳遞給shell的子進程。這些變量大多數(shù)在/etc/profile文件中初始化,而/etc/profile是在用戶登錄的時候執(zhí)行的。環(huán)境變量說明讀寫特性HOME當前用戶的家目錄讀寫PATH以冒號分隔的,搜素路徑的目錄列表讀寫CDPATHCd命令訪問的目錄的別名
PS1命令提示符的形式,可以直接讀出,也可以寫入來修改讀寫PS2二級提示符,用來提示后續(xù)的輸入,通常是>讀寫IFS輸入域分隔符。當shell讀取輸入的數(shù)據(jù)時,用來分割單詞的一組字符,他們通常是空格、制表符和換行符讀寫ENVLinux查找配置文件的路徑讀寫EDITOR用戶在程序中使用的默認的編輯器讀寫PWD當前工作目錄的名字讀寫TERM用戶使用的控制臺終端的類型讀寫例4.23使用$取出變量的值2.位置參數(shù)由系統(tǒng)提供的參數(shù)稱為位置參數(shù),位置參數(shù)的值通過$N取得,N是一個數(shù)字。Linux會把輸入的命令字符串分段并給每段進行標號,標號從0開始,第0號是程序名字,第1號是傳遞給程序的參數(shù)。各位置參數(shù)的含義如表4.2所示。位置參數(shù)說明讀寫特性$0Shell腳本的文件名只讀$1--$9命令行參數(shù)1—9的值只讀$*命令行中的所有參數(shù)。如果$*被括在雙引號””中,則各個參數(shù)之間用環(huán)境變量IFS中的第一個字符分隔只讀$@命令行中的所有參數(shù)。是$*的變種,如果$*被括在雙引號””中,他不使用環(huán)境變量IFS,所以當IFS為空時,參數(shù)的值不會結合在一起只讀$#命令行參數(shù)的總個數(shù)只讀$$Shell腳本進程的ID號只讀$?最近一次命令的退出狀態(tài)只讀$!最近一次后臺進程的ID號只讀例4.24編寫一個程序,描述shell程序中的位置參數(shù)3.用戶自定義變量在bash中,變量可以不聲明而直接使用,但有一些特殊類型的變量必須先聲明,聲明變量的方法有declare和typeset,可以對他們初始化,設定屬性等。一個變量默認是一個字符串.命令語法:declare[options][name[=value]]typeset[options][name[=value]]功能:聲明變量,初始化變量,設置他們的屬性。當不使用name和options的時候,顯示所有shell變量和他們的值。常用選項:-a聲明“name”是一個數(shù)組-f聲明“name”是一個函數(shù)-i聲明“name”是一個整數(shù)-r聲明“name”是只讀的變量-x表示每一個“name”變量都可以被子進程訪問到,稱為全局變量例4.26直接使用變量4.3.2單雙引號””、’’和反斜線使用雙引號可引用除字符$、`、\外的任意字符或字符串。對大多數(shù)的元字符(包括*)都將按字面意思處理。如果用雙引號(“”)將值括起來,則允許使用$符對變量進行替換。字符串通常都被放在雙引號中,以防止它們被空白字符分開。如果用單引號‘’將值括起來,則不允許有變量替換,不對它做shell解釋,也就是字符取字面含義,輸出時原樣輸出。反斜杠(\)用來去除某些字符的特殊含義并把它們按字面意思處理,其中就包括$。例4.27單雙引號和反斜線的使4.3.3命令替換$()1.命令替換$()當一個命令被包含在一對括號里并在括號前加上$符號,如$(command),或者被包含在反引號“`”(如`command`)中的時候,shell把它替換為這個命令的輸出結果。這個過程被稱為命令替換。命令替換適用于所有的命令。例4.28命令替換4.3.4表達式求值$(())、expr()和反引號``1.命令$((expression))$((expression))就是把字符串expression轉換為數(shù)字并參與計算。這個語法類似于命令替換所用的語法“$(命令)”,并將執(zhí)行相同的功能??蓪?((expression))作為參數(shù)傳遞給命令或者放置在命令行上任何數(shù)字位置上。不需要在expression中的變量名稱前加上$符號。2.expr()expr命令將它的參數(shù)當作一個表達式來求值。命令語法:exprargs功能:計算表達式的參數(shù)‘args’的值,并返回它的值到標準輸出。3.反引號(``)對expr表達式求值,經(jīng)常把整個表達式放在反引號中,如y=`expr$x+1`,這樣變量y就可以取整個表達式的計算結果。也可以用語法$()替換反引號``。例4.29數(shù)學表達式求值4.4控制結構語句4.4.1順序結構的語句bash具有一般高級程序設計語言具有的控制結構語句。程序控制語句是用來決定shell腳本執(zhí)行時各個語句執(zhí)行的順序的。對于順序結構的程序,程序安照語句的書寫順序執(zhí)行,常用來實現(xiàn)順序結構的語句有對變量的賦值,各種Linux命令等。除了使用=來對變量賦值外,還可以使用read命令來將用戶的輸入賦值給一個shell變量中。其語法形式:read[options]variable-list讀入的一行數(shù)據(jù)由許多值組成,各個值之間是用shell環(huán)境變量IFS的值(空格、制表符、Enter鍵)分隔開的。通常情況下,在用戶按下回車鍵時,read命令結束。例4.30編寫shell程序shl430,從鍵盤讀入x、y的值,然后做加法運算,最后輸出結果。例4.31從鍵盤讀入一個目錄名,并顯示該目錄下的所有文件信息4.4.2選擇結構的語句
1.二路選擇if語句if語句常用的三種格式:第一種:ifexpressionthenthen-commdfi第二種:ifexpressionthencommd-listelsecommd-list2fi第三種:ifexpression1thencommd-list1elifexpression2thencommd-list2elif…elseelse-commandsfi表達式expression可以用testexpression命令或[expression]來檢測。這個命令檢測一個表達式并返回true或者false。注意,在[expression]中,expression的前后一定要用空格。命令語法:testexpression[expression]test命令可以使用的條件類型可以歸為三類:字符串比較、算術比較和與文件有關的條件測試,這三種條件類型分別如表4.3和4.4和4.5所示。例4.32從鍵盤讀入兩個字符串,判斷這兩個字符串是否為空,若都不為空,則比較是否相等,把比較結果輸出。例4.33比較兩個數(shù)字是否相等。例4.34輸入一個字符串,如果是目錄,則顯示目錄下的信息,如為文件顯示文件的內容。2.caseLinux里的if的結束標志是將if反過來寫成fi;而elif其實是elseif的縮寫,其中elif理論上可以有無限多個;實際上,多于三個的分支,可以使用case語句,使程序結構清晰。case字符串in值1|值2)操作;;值3|值4)操作;;值5|值6)操作;;esaccase的作用就是當字符串與某個值相同時就執(zhí)行那個值后面的操作。如果同一個操作對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3730-2024 3D打印指甲貼片
- 2025年度租賃期滿后房屋產權無償轉讓協(xié)議
- 二零二五年度美容院合伙經(jīng)營店鋪轉讓協(xié)議
- 二零二五年度輔導班學生安全協(xié)議及教師教學責任書
- 2025年度洗浴中心員工薪酬福利及雇傭合同
- 二零二五年度股權激勵與員工股權激勵計劃執(zhí)行合同模板
- 二零二五年度貸款合同爭議解決協(xié)議書
- 網(wǎng)絡游戲合作開發(fā)與運營協(xié)議
- 關于辦公時間調整的通知
- 房屋及土地使用權轉讓合同書
- 2024年山東化工職業(yè)學院高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 《新病歷書寫規(guī)范》課件
- 2024年中小學生守則修訂版
- 博覽會展位裝修及布展投標方案技術標
- 顧客提問的問題100條
- 肝膿腫教學查房課件
- 跳繩之雙腳跳教案
- 拇外翻護理課件
- 六年級英語教學隨筆5篇
- 讀書分享交流會《從一到無窮大》課件
- 醫(yī)療器械可用性工程文檔
評論
0/150
提交評論