第9章 變量的高級用法_第1頁
第9章 變量的高級用法_第2頁
第9章 變量的高級用法_第3頁
第9章 變量的高級用法_第4頁
第9章 變量的高級用法_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第9章變量的高級用法提綱內(nèi)部變量字符串處理有類型變量間接變量引用內(nèi)部變量(1)BASHBASH記錄了bashShell的路徑,通常為/bin/bash,內(nèi)部變量SHELL就是通過BASH的值確定當(dāng)前Shell的類型BASH_VERSINFOBASH_VERSINFO是一個數(shù)組,包含6個元素,這6個元素用于表示bash的版本信息例6-2bashver.sh腳本BASH_VERSIONLinux系統(tǒng)的bashShell版本,包含了主次版本、補(bǔ)丁級別、編譯版本和發(fā)行狀態(tài),即BASH_VERSINFO數(shù)組從0到4的值內(nèi)部變量(2)DIRSTACKLinux目錄棧用于存放工作目錄,便于程序員手動控制目錄的切換,bashShell定義了兩個系統(tǒng)命令pushd和popdpushd命令用于將某目錄壓入目錄棧,同時將當(dāng)前工作目錄切換到入棧的目錄popd命令將棧頂目錄彈出,棧頂元素變?yōu)橄乱粋€元素,同時將當(dāng)前工作目錄切換到棧彈出的目錄DIRSTACK記錄了棧頂目錄值,初值為空內(nèi)部變量(3)GROUPSGROUPS記錄了當(dāng)前用戶所屬的群組,Linux的一個用戶可同時包含在多個組內(nèi),因此,GROUPS是一個數(shù)組,數(shù)組記錄了當(dāng)前用戶所屬的所有群組號(gid)cat/etc/group|more內(nèi)部變量(3)HOSTNAME記錄了Linux主機(jī)的名字HOSTTYPE和MACHTYPE記錄系統(tǒng)的硬件架構(gòu)OSTYPE記錄了操作系統(tǒng)類型,Linux系統(tǒng)中,$OSTYPE=linux內(nèi)部變量(4)REPLYREPLY變量與read和select命令有關(guān)read命令用于讀取標(biāo)準(zhǔn)輸入(stdin)的變量值

readvariable#varibale是變量名read將讀到的標(biāo)準(zhǔn)輸入存儲到variable變量中。read命令也可以不帶任何變量名,此時,read就將讀到的標(biāo)準(zhǔn)輸入存儲到REPLY變量中演示例9-9內(nèi)部變量(5)REPLYREPLY變量與read和select命令有關(guān)bashShell的select命令源自于KornShell,是一種建立菜單的工具,它提供一組字符串供用戶選擇,用戶不必完整地輸入字符串,而只需輸入相應(yīng)的序號進(jìn)行選擇selectvariableinlistdo

Shell命令1

Shell命令2

Shell命令3……breakdoneselect自動將list形成有編號的菜單,用戶輸入序號以后,將該序號所對應(yīng)list中的字符串賦給variable變量,而序號值則保存到REPLY變量中演示例9-10selectreply.sh腳本內(nèi)部變量(6)SECONDS記錄腳本從開始執(zhí)行到結(jié)束所耗費(fèi)的時間,以秒為單位演示例9-12runsec.sh腳本TMOUT設(shè)置Shell的過期時間,當(dāng)TMOUT不為0時,Shell在TMOUT秒后將自動注銷。TMOUT放在腳本中,可以規(guī)定腳本的執(zhí)行時間演示例9-13timedread.sh腳本內(nèi)部變量(7)SHELLOPTSShell選項(xiàng)(options)用于設(shè)定bashShell所支持的一些特性,一個Shell選項(xiàng)有“開”和“關(guān)”兩種狀態(tài)set命令用于打開或關(guān)閉選項(xiàng)

set-ooptionname#打開名為optionname選項(xiàng)set+ooptionname#關(guān)閉名為optionname選項(xiàng)SHELLOPTS記錄了處于“開”狀態(tài)的Shell選項(xiàng)(options)列表,它是一個只讀變量演示例9-12set命令還可以直接利用選項(xiàng)的簡寫來開啟或關(guān)閉選項(xiàng)bashShell選項(xiàng)、簡寫及其意義選項(xiàng)名稱簡寫意義noclobberC防止重定向時覆蓋文件allexportaexport所有已定義的變量norifyb后臺作業(yè)運(yùn)行結(jié)束時,發(fā)送通知errexite當(dāng)腳本發(fā)生第一個錯誤時,退出腳本noglobf禁止文件名擴(kuò)展,即禁用通配(globbing)interactivei使腳本以交互模式運(yùn)行noexecn讀取腳本中的命令,進(jìn)行語法檢查,但不執(zhí)行這些命令POSIXoposix修改bash及其調(diào)用腳本的行為,使其符合POSIX標(biāo)準(zhǔn)privilegedp以suid身份運(yùn)行腳本restrictedr以受限模式運(yùn)行腳本stdins從標(biāo)準(zhǔn)輸入(stdin)中讀取命令nounsetu當(dāng)使用未定義變量時,輸出錯誤信息,并強(qiáng)制退出verbosev在執(zhí)行每個命令之前,將每個命令打印到標(biāo)準(zhǔn)輸出(stdout)xtracex與verbose相似,但是打印完整命令無D列出雙引號內(nèi)以$為前綴的字符串,但不執(zhí)行腳本中的命令無c…從…中讀取命令無t第一條命令執(zhí)行結(jié)束就退出無-選項(xiàng)結(jié)束標(biāo)志,后面跟上位置參數(shù)(positionalparameter)字符串處理(1)第4章講述過awk的字符串處理函數(shù),本節(jié)介紹expr命令處理字符串計(jì)算字符串長度${#string}exprlength$string演示例9-14索引命令exprindex$string$substring演示例9-16匹配子串exprmatch$string$substring#在string的開頭匹配substring字符串演示例9-17字符串處理(2)抽取子串#{string:position}#從名稱為$string的字符串的第$position個位置開始抽取子串#{string:position:length}#從名稱為$string的字符串的第$position個位置開始抽取長度為$length的子串注意:#{…}格式的命令從0開始對名稱為$string的字符串進(jìn)行標(biāo)號演示例9-18,例9-19#{string:-position}#冒號和橫杠符號之間有一個空格符#{string:(position)}#冒號和左括號之間未必要有空格符演示例9-20字符串處理(3)抽取子串(續(xù))exprsubstr$string$position$length#從名稱為$string的字符串的第$position個位置開始抽取長度為$length的子串注意:

exprsubstr命令是從1開始對名稱為$string的字符串進(jìn)行標(biāo)號的演示例9-22刪除子串${string#substring}#刪除string開頭處與substring匹配的最短子串${string##substring}#刪除string開頭處與substring匹配的最長子串

${string%substring}#刪除string結(jié)尾處與substring匹配的最短子串${string%%substring}#刪除string結(jié)尾處與substring匹配的最長子串演示例9-25,例9-26字符串處理(4)替換子串替換子串命令都是${…}格式,可以在任意處、開頭處和結(jié)尾處替換滿足條件的子串${string/substring/replacement}#僅替換第一次與substring相匹配的子串${string//substring/replacement}#替換所有與substring相匹配的子串演示例9-27${string/#substring/replacement}#替換string開頭處與substring相匹配的子串${string/%substring/replacement}#替換string結(jié)尾處與substring相匹配的子串演示例9-29有類型變量(1)Shell變量一般是無類型的,但是bashShell提供了declare和typeset兩個命令用于指定變量的類型,兩個命令是完全等價(jià)的declare[選項(xiàng)]變量名例9-30選項(xiàng)名意義-r將變量設(shè)置為只讀屬性-i將變量定義為整型數(shù)-a將變量定義為數(shù)組-f顯示此腳本前定義過的所有函數(shù)名及其內(nèi)容-F僅顯示此腳本前定義過的所有函數(shù)名-x將變量聲明為環(huán)境變量有類型變量(2)雙小括號方法,即((…))格式,也可以用于算術(shù)運(yùn)算雙小括號方法也可以使bashShell實(shí)現(xiàn)C語言風(fēng)格的變量操作例9-31declare命令的-x選項(xiàng)將變量聲明為環(huán)境變量,相當(dāng)于export命令,但是,declare-x允許在聲明變量為環(huán)境變量的同時給變量賦值,而export命令不支持此功能declare-xvariable-name=value間接變量引用如果第一個變量的值是第二個變量的名字,從第一個變量引用第二個變量的值就稱為間接變量引用variable1=variable2variable2=valuevariable1的值是variable2,而variable2又是變量名,variable2的值為value,間接變量引用是指通過variable1獲得變量值value的行為bashShell提供了兩種格式實(shí)現(xiàn)間接變量引用evaltempvar=\$$variable1tempvar=${!variable1}例9-33,例9-34練習(xí)1。連續(xù)執(zhí)行以下命令,給出目錄棧中元素入棧和出棧的序列,在每條命令后查看DIRSTACK的值。pushd/etcpushdsysconfigpop

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論