




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章Shell命令語言內容提要shell概述shell腳本shell命令的組成shell變量shell控制語句函數4.1shell概述shell概述shell是一種用戶交互程序,位于用戶與內核之間,它不斷接收并執行用戶提交的作業,將執行結果返回給用戶。shell引入了變量、控制語句和函數等語法,具有結構化程序設計語言的特征。與C/C++等程序設計語言不同,shell命令語言屬于解釋性語言。shell的分類shell源自Unix,自Unix誕生至今,誕生了多個shell版本,其中較為著名的有BourneshellCshellKornshellGNUBourne-AgainshellBash作為Linux發行版默認的shell。4.2shell腳本內容提要shell腳本概述shell腳本的執行過程命令的運行環境腳本的執行方法shell腳本用shell命令語言編寫的文本文件通常稱為shell腳本,腳本后綴名通常以.sh標識。一個簡單Shell腳本demo.sh#!/bin/bash#demoscriptvar1="welcometouseShellscript"echo$var1pwdshell腳本的執行過程取shell腳本第1條命令語法檢查內部命令調用shell內部函數取下一條命令腳本結束結束合法是外部命令是在shell創建的子進程中加載對應的程序不合法否命令的運行環境shell腳本可運行在兩種不同的環境中,當前shell和子shell。1.當前shell環境當前Shell環境中的變量對命令可見,命令可直接修改變量的內容。2.子shell環境子Shell擁有獨立的命名空間,子Shell會生成父Shell的變量副本,命令對副本的修改,對父Shell不產生影響。腳本的執行方法1.添加可執行權腳本運行于子shell環境。2.使用bash命令執行將腳本作為參數交由shell交互程序執行,腳本運行于子shell環境。3.利用元字符.執行腳本在執行的腳本前加上字符.和空格,腳本運行于當前shell環境。實例分析$var1=123$catdemo.sh#!/bin/bashechohello$USER$var1$chmod+xdemo.sh$./demo.sh//在子shell環境下運行
helloroot$bashdemo.sh//在子shell環境下運行
helloroot$.demo.sh//在當前shell環境下運行
helloroot1234.3shell命令的組成內容提要簡單命令管道命令序列復合命令簡單命令語法[!]cmd[list]功能cmd為命令名,list為參數列表,參數包括選項、重定向和操作對象,參數數量因命令而異。命令的返回值取決于命令中執行exit系統調用時傳遞的狀態,若命令因信號而結束,其返回值為128+n。管道語法cmd1|cmd2功能命令cmd1的標準輸出作為命令cmd2的標準輸入。管道的返回狀態取決于命令cmd2,命令cmd1和cmd2軍在子shell環境中執行。命令序列語法cmd1[;|&|&&||||<newline>]cmd2功能命令cmd1和cmd2取決于操作符,操作符的含義如下表所示。操作符含義cmd1;cmd2以獨立的進程依次運行cmd1和cmd2cmd1&cmd2cmd1和cmd2同時運行,分屬于不同進程組cmd1&&cmd2當cmd1執行為真時,執行cmd2cmd1||cmd2當cmd1執行為假時,執行cmd2命令序列的返回值取決于最后一個執行的命令。。復合命令1.(list)命令序列list在子shell環境中運行。2.{list;}命令序列list在當前shell環境下運行,命令序列需以回車換行符或分號結尾。復合命令(續)3.((expr))用于數值計算,算術表達式expr在當前shell環境下運行,語法可參見C語言。當expr的值為0,返回狀態為0,否則返回1。4.[[expr]]用于測試條件表達式expr的真假,它是[]和test的擴展,在當前shell環境下運行。5.控制語句用于控制腳本的執行邏輯。實力分析(1)在子Shell環境中執行賦值語句$var1=12;(var1=23;echo-n$var1);echo$var12312(2)在當前Shell環境中執行賦值語句$var1=12;{var1=23;echo-n$var1;};echo$var123234.4shell變量內容提要shell變量概述變量的分類輸入和輸出參數的引用shell變量概述變量是構成語言的基礎,用于存儲各種參數。shell變量有其自身特點。1.shell變量不預先聲明類型。2.shell變量無局部變量和全局變量之分。shell變量的分類用戶自定義變量環境變量位置變量預定義變量用戶自定義變量(1)用戶自定義變量的賦值語法name=value(2)變量的引用語法name2=${name1}name2=$name1(3)清除變量的內容語法unsetname環境變量環境變量用于記錄shell的環境參數,例如,用戶身份和工作環境等設置環境變量語法export[option][name|name[=value]...實例分析$exportvar1="helloLinux"$(echo$var1)helloLinuxshell中常見的環境變量環境變量名含義HOME當前用戶的主目錄PATH命令搜索路徑LOGNAME用戶登錄名PS1第一命令提示符PS2第二命令提示符,默認是>PWD用戶的當前目錄UID當前用戶標識符登錄shell啟動時,系統會為用戶預先設置一些環境變量。位置變量未知變量用于標識傳遞給腳本或函數參數的位置。位置變量含義0,1,2...數字代表參數的位置,$1代表第1個參數的值,依此類推實例分析$catdemo.sh#!/bin/bashecho$0 $1 $2$bashdemo.shhellolinuxdemo.sh helli inux預定義變量
預定義變量為shell內部預先定義,其內容具有特定的含義。預定義變量含義#位置參數的數量*所有未知參數的內容,以$1$2...$n的形式輸出?最近最后一條命令的返回狀態$當前進程的進程號!后臺運行的最后一個進程號@所有未知參數的內容,以$1$2...$n的形式輸出0shell或shell腳本的名稱實力分析實例分析$catdemo.sh#!/bin/bashecho$#echo$*$bashdemo.shhellolinux2 hellolinux命令置換將命令的執行結果取代命令本身稱為命令置換。語法name=`cmd`name=$(cmd)實例分析$var1=`pwd`$echo$var1/home/zhangs$var2=$(expr$var2+1)輸入和輸出read/echo語法read[option]list功能從鍵盤上讀取列表list中的變量選項含義-pprompt設置提示信息-nnum當read讀num個字符后返回-s鍵盤輸入屏幕不回顯,可用于密碼輸入-ttimeout設置超時時間為timeout-r取消轉義字符的轉義作用-ddelim定義新的換行符輸入和輸出read/echo語法echo[option][list]功能顯示列表list中的字符串選項含義-n不在最后自動換行-e啟用轉義符-E禁用轉義符,缺省選項轉義符含義\a從系統喇叭發送出聲音\b向左刪除\c取消行末的換行符號\EESCAPE鍵\f換頁字符\n換行字符\r回車鍵\t表格跳位鍵\\反斜線本身字符串引用1.反斜杠在元字符前加上反斜杠\表示轉義,改變原字符的含義,但回車換行符例外。2.單引號shell對單引號內的字符不做解釋,保留字符的緣由含義。3.雙引號
shell除了對雙引號內的變量引用和命令置換做出解釋外,其他字符保留其原有含義。實例分析$echohello$var1$echo'hello$var1'$echo"hello$var1"$echo*$echo'*'"*"4.5結構化命令內容提要條件表達式文件表達式字符串表達式數學表達式邏輯表達式選擇語句if語句case語句循環語句for循環語句while語句條件表達式條件表達式用于判定條件的真假,它是構成選擇語句和循環語句的基礎。語法test[!]expr[[!]expr][[[!]expr]]功能測試條件表達式expr是否為真,若真則返回0,否則返回1。文件狀態操作符操作符含義-dfilename若文件filename為目錄文件,則返回真-ffilename若文件filename為普通文件,則返回真-rfilename若文件filename可讀,則返回真-sfilename若文件filename的長度大于0,則返回真-ufilename若文件filename的SUID位被設置,則返回真-wfilename若文件filename可寫,則返回真-xfilename若文件filename可執行,則返回真用于測試文件的狀態實例分析$test-dfilename$echo$?字符串操作符
用于判斷兩個字符串基于字典序的大小關系,也可測試字符串的內容是否為空。操作符含義string若字符串string非空,則返回真-nstring若字符串string長度大于0,則返回真-zstring若字符串string長度為0,則為返回真string1=string2若字符串string1和string2相等,則返回真string1!=string2若字符串string1和string2不等,則返回真實例分析$test"abc"="abd"$echo$?數字操作符
用于判定兩個數字之間的大小關系。操作符含義n1–eqn2判斷數字n1與n2是否相等,若相等返回0,否則返回1n1–nen2判斷數字n1與n2是否不等,若不等返回0,否則返回1n1–ltn2判斷數字n1是否小于n2,若是返回0,否則返回1n1–gtn2判斷數字n1是否大于n2,若是返回0,否則返回1n1–len2判斷數字n1是否小于或等于n2,若是返回0,否則返回1n1–gen2判斷數字n1是否大于或等于n2,若是返回0,否則返回1實例分析$test10-gt20$echo$?邏輯操作符用于判定兩個條件表達式的邏輯關系。操作符含義e1–ae2邏輯表達式e1和e2同時為真時,返回0,否則,返回1e1–oe2邏輯表達式e1和e2有一個為真時,返回0,否則,返回1!e1若邏輯表達式e1不為真時,返回0,否則,返回1實例分析$test$var1-gt5-a$var1-lt20$echo$?if語句語法一iflist1thenlist2elselist3fi語法二iflist1then list2fiif語句語法形式三
iflist1 then list2 eliflist3 then list4 else list5 fi命令序列list5屬于第2個條件語句的一部分。在實際應用中,一般嵌套層數不能超過二層,否則會影響腳本的可讀性。實例分析#!/bin/bashif((${#}!=2))then echo"Usage:${0}num1num2" exit1fi if((${1}>${2}))then echo"${1}isgreaterthan${2}" exit0fiif((${1}<${2}))then echo"${1}islessthan${2}" exit0fiecho"${1}isequalto${2}"case語句語法casenamein[(]pattern1) list1 ;;[(]pattern2) list2 ;;...[(]patternn) listn ;;esac功能根據變量name的值執行匹配的命令序列,list1,list2...listn為命令序列。實例分析#!/bin/bashhour=$(date+%H)case${hour}in(0[5-9]|1[01]) echo"Goodmorining";;(1[2-7]) echo"Goodafternoon";;(*) echo"Goodevening";;esacfor語句語法一
fornameinwords do list done功能將參數列表words中的參數依次賦給變量name,循環執行命令序列list。語法二
for((expr1;expr2;expr3)) do list done功能
expr1,expr2和expr3為算術表達式,語義與C語言的for語句相同。實例分析#!/bin/bash#exam4-6.shif((${#}<1))then echo"Usage:$0num1num..." exit1fi smallest=${1}foriin${*}do if((i<smallest)) then smallest=${i} fidoneecho"thesmallestnumberis:${smallest}"while語句
語法
whilelist1 do list2 done功能循環執行命令序列list2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025個人車位租賃合同協議
- 2025年農村自建房施工合同模板
- 《建設用地分析與規劃》課件
- 2025兒童教育行業銷售勞動合同
- 《客戶服務投訴處理》教學課件
- 2025年浙江寧波市奉化區人才發展有限公司招聘筆試參考題庫附帶答案詳解
- 中班安全教育:不玩媽媽的化妝品
- 護理管理藝術
- 2025年雅安市交通建設(集團)有限責任公司招聘筆試參考題庫含答案解析
- 企業合規考察課件
- 2024年中國光大銀行招聘考試真題
- 2025-2030中國油漆和涂料消光劑行業市場發展趨勢與前景展望戰略研究報告
- 《食品生產經營企業落實食品安全主體責任監督管理規定》解讀與培訓
- 廣東省深圳市南山外國語學校等學校聯考2023-2024學年七年級下學期期中數學試題
- 橙色黑板風小學生知識產權科普PPT模板
- 電網公司變電設備帶電水沖洗作業實施細則
- 中國供銷合作社標識使用手冊課件
- Q∕CR 9218-2015 鐵路隧道監控量測技術規程
- 甲狀腺解剖及正常超聲切面ppt課件
- 上海市城市地下空間建設用地審批及房地產登記試行規定
- 蠕墨鑄鐵項目可行性研究報告寫作范文
評論
0/150
提交評論