freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

shell基礎(chǔ)與編程技術(shù)講義(編輯修改稿)

2025-03-31 17:16 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 a]即為變量的屬性),在第 6個(gè)選項(xiàng)中用來(lái)顯示 shell函數(shù)。若不加上參數(shù),則顯示全部的 shell變量與函數(shù) (與執(zhí)行 set指令的效果相同 )。參數(shù) 用來(lái)指定變量的屬性, +則取消變量所設(shè)的屬性。 ? !/bin/bash ? declare i a=2 ? declare i b=3 ? declare i c=$a+$b ? echo $c ? 這樣出來(lái)的結(jié)果才能是 5。 29 數(shù)組變量 bash只提供一維數(shù)組,數(shù)組的大小沒(méi)有限定。和 C類(lèi)似,數(shù)組元素下標(biāo)由 0開(kāi)始。獲取數(shù)組中的元素要利用下標(biāo)。下標(biāo)是整數(shù)或算術(shù)表達(dá)式,值 =0??捎觅x值語(yǔ)句對(duì)數(shù)組賦值。形式是: 數(shù)組名 [下標(biāo) ]=值。 【 例 】 $ city[0]=Beijing or $ city[1]=Shanghai 用 declare顯式聲明數(shù)組形式是: declare a 數(shù)組名 讀取數(shù)組元素值的一般格式是: ${數(shù)組名 [下標(biāo) ]} 【 例 】 $ echo ${city[0]} Beijing 數(shù)組元素可單獨(dú)逐個(gè)賦值或組合賦值。形式是: 數(shù)組名 =(值 1 值 2 ... 值 n) ;其中各個(gè)值之間以空格分開(kāi)。如: $ A=(this is an shell example script) $ echo ${A[*]} 則顯示的結(jié)果為: $ this is an shell example script $ echo ${A[6]} 由于數(shù)組初值有 6個(gè),所以 A元素個(gè)數(shù)是 6。 A[6]超出了數(shù)組 A范圍,被認(rèn)為是新元素,由于沒(méi)有賦值,所以是空串。數(shù)組名表示下標(biāo)為 0的數(shù)組元素,如 city就等價(jià)于 city[0]。使用 *或 做下標(biāo),則會(huì)以數(shù)組中所有元素取代 [*]或 []。 30 變量的引用 ? 在 bash中,有效的變量引用表達(dá)式有以下幾種形式: ? $name ${namepattern} ? ${name} ${namepattern} ? ${name[n]} ${name % pattern} ? ${name[*]} ${name %% pattern} ? ${name []} ${} ? ${name:word} ${$*} ? ${name:=word} ${ name } ? ${name:?word} ${ name[*]} ? ${name:+word} ${name[]} 31 這些不同形式的意義解釋 表達(dá)式 $name表示變量 name的值,若未定義,則用空值替換。 表達(dá)式 ${name}將被變量 name的值替換。用花括號(hào)括起 name,是把變量名與后面字符分隔開(kāi),避免混淆。替換后花括號(hào)被取消。 ${name[n]}表示數(shù)組變量 name中第 n個(gè)元素的值。 表達(dá)式 ${name[*]}和 ${name[]}都表示數(shù)組 name中所有非空元素值,用空格分開(kāi)。用雙引號(hào)括起來(lái)時(shí), ${name[*]}被擴(kuò)展成字符串,各數(shù)組元素以空格分開(kāi);而 ${name[]}被擴(kuò)展成多個(gè)詞,每個(gè)數(shù)組元素是一個(gè)詞。如果數(shù)組 name中沒(méi)有元素,則 ${name[]}被擴(kuò)展為空串。 表達(dá)式 ${namepattern}和 ${namepattern},如果 pattern(表示匹配模式 )與name值的開(kāi)頭匹配,那么 name的值去掉匹配部分后的結(jié)果就是該表達(dá)式的值 。否則, name的值就是該表達(dá)式的值。在第一種格式中, name值去掉的部分是與 pattern匹配的最少的部分;而第二種格式中, name值去掉的部分是與 pattern匹配的最多的部分。 表達(dá)式 ${name % pattern}和 ${name %% pattern},如果 pattern與 name值的末尾匹配,那么 name的值中去掉匹配部分后的結(jié)果就是該表達(dá)式的值;否則,該表達(dá)式的值就是 name的值。在第一種格式中,去掉的部分是最少的匹配部分;而第二種格式中,去掉的部分是最多的匹配部分。 表達(dá)式 ${}和 ${*}的值分別是由 $和 $*返回的參數(shù)的個(gè)數(shù)。 表達(dá)式 ${name[i]}的值是數(shù)組 name第 i個(gè)元素值的長(zhǎng)度。 表達(dá)式 ${name[*]}和 ${name[]}的值都是數(shù)組 name的元素個(gè)數(shù)。 32 鍵盤(pán)輸入變量 ? 利用 read命令可從鍵盤(pán)讀數(shù)據(jù)賦給指定變量。 read命令的一般格式是: ? read 變量 1 [ 變量 2 …] 。例如: ? read a b c ? 輸入數(shù)據(jù)時(shí),數(shù)據(jù)間以空格或制表符分隔。如果變量個(gè)數(shù)與給定數(shù)據(jù)個(gè)數(shù)相同,則依次對(duì)應(yīng)賦值;如果變量個(gè)數(shù)少于數(shù)據(jù)個(gè)數(shù),則從左至右對(duì)應(yīng)賦值,但最后一個(gè)變量被賦予剩余的所有數(shù)據(jù);如果變量個(gè)數(shù)多于給定數(shù)據(jù)個(gè)數(shù),則依次對(duì)應(yīng)賦值,而沒(méi)有數(shù)據(jù)與之對(duì)應(yīng)的變量取空串。 33 位置變量 ? 在執(zhí)行 linux命令或 shell腳本時(shí)可以用實(shí)參替代位置變量,它們的名稱(chēng)很特別,分別是 0、 2……9 。因?yàn)樗鼈兣c命令行上具體位置的實(shí)參相對(duì)應(yīng):命令名(文件名)對(duì)應(yīng)位置變量 0,第一個(gè)實(shí)參對(duì)應(yīng)位置變量 1,第二個(gè)實(shí)參對(duì)應(yīng)位置變量 2…… 如果位置變量是由兩個(gè)或更多個(gè)數(shù)字構(gòu)成,必須把它們用一對(duì)花括號(hào)括起來(lái),如 {10}、 {11}。命令行實(shí)參與腳本中位置變量的對(duì)應(yīng)關(guān)系如下: ? m c1 c2 c3 c4 …… c10 c11…… ? $0 $1 $2 $3 $4 …… ${10} ${11}…… ? 【例】 ? $ set `pwd。ls。date` ? $ echo $1 $2 $3 $9 ${10} ${11} ? /home/mengqc bash_1 ex1 12 3 21:52:32 ? 在 cygwin中的應(yīng)用情況見(jiàn)圖 。 34 ? 如果在腳本中使用的位置參數(shù)不超過(guò) 9個(gè),那么只用 $1~$9即可。但是,實(shí)際給定的命令行參數(shù)有可能超過(guò) 9個(gè),此時(shí)就要用 shift命令移動(dòng)位置參數(shù)。每執(zhí)行一次 shift命令,就把命令行上的實(shí)參向左移一位,即相當(dāng)于位置參數(shù)向右移動(dòng)一個(gè)位置,如表 。 ? 表 位置變量的 shift對(duì)應(yīng)關(guān)系 ? 命令行 Ex7ABCDEF原位置參數(shù) $0$1$2$3$4$5$6新位置參數(shù) $0$1$2$3$4$5表 。可以看出, shift命令執(zhí)行后新 $1的值是原 $2的值,新 $2的值是原 $3的值,依此類(lèi)推。 shift命令不能將 $0移走,所以經(jīng) shift右移后, $0的值不會(huì)變化,見(jiàn)圖 。 35 預(yù)定義特殊變量 shell中預(yù)定義的特殊含義的 shell變量值只能由 shell根據(jù)實(shí)際情況賦值,不能通過(guò)用戶(hù)重新設(shè)置。下面給出這些特殊變量的表示形式及意義。 $ 命令行上實(shí)際參數(shù)的個(gè)數(shù),不包含 shell文件名。 $?上一條命令執(zhí)行后的返回值(也稱(chēng)為“退出碼”),是一個(gè)十進(jìn)制數(shù)。多數(shù) shell命令執(zhí)行成功時(shí),返回值為 0;執(zhí)行失敗則返回非 0值。 圖 shift右移位置參數(shù)的變化情況 $$ 當(dāng)前進(jìn)程的進(jìn)程號(hào)。 $!上一個(gè)后臺(tái)命令對(duì)應(yīng)的進(jìn)程號(hào),是由 1~5位數(shù)字構(gòu)成的數(shù)字串。 $ 由當(dāng)前 shell設(shè)置的執(zhí)行標(biāo)志名組成的字符串。例如: set xv 這個(gè)命令行給 shell設(shè)置了標(biāo)志 x和 v(用于跟蹤輸出)。 $*表示命令行中實(shí)際給出的所有實(shí)參字符串,不限于 9個(gè)實(shí)參。 $ 它與 $*基本功能相同,但“ $”與“ $*”不同。 $ 0 :保存程序名。 36 環(huán)境變量與置換變量 PWD是指用戶(hù)當(dāng)前目錄的全名 PPID是指父進(jìn)程 ID $是指當(dāng)前進(jìn)程 ID UID是指當(dāng)前用戶(hù)的 User ID PATH是指查找命令的目錄列表。 PATH變量含帶冒號(hào)符的字符串。 USER是指用戶(hù)賬號(hào) MAIL是指系統(tǒng)信箱的路徑。 TERM是指終端類(lèi)型。 LOGNAME是用戶(hù)登錄名 SECONDS是指當(dāng)前運(yùn)行的 bash進(jìn)程的運(yùn)行時(shí)間 (以秒為單位 ) HOME是指用戶(hù) home目錄的路徑名,是 cd命令的默認(rèn)參數(shù) COLUMNS是指定義了命令編輯模式下可使用命令行的長(zhǎng)度 EDITOR是指默認(rèn)的行編輯器 IFS是定義 SHELL使用的分隔符 TMOUT SHELL指自動(dòng)退出時(shí)間(秒),設(shè)為 0禁止 SHELL自動(dòng)退出 PS1是指主命令提示符 PS2指二級(jí)命令提示符,要求輸入數(shù)據(jù)時(shí)用 PS3是 select的命令提示符 PS4是指調(diào)試命令提示符 LD_LIBRARY_PATH是指尋找?guī)斓穆窂?,以冒?hào)分隔。 參數(shù)置換變量的一般形式是:變量 2=$ {變量 1 op 字符串 } 其中 op表示操作符,它可以是下列四個(gè)操作符之一“:: ”、“: =” 、“ : +” 和“ : ?”。變量 2的值取決于變量 1(參數(shù))是否為空串、用什么操作符及字符串的取值。在操作符的前后不要留空格。 37 算術(shù)運(yùn)算 bash中的整數(shù)算術(shù)運(yùn)算命令是 let,其語(yǔ)法格式為: let arg … 其中 arg是單獨(dú)的算術(shù)表達(dá)式,使用的是 C語(yǔ)言中表達(dá)式的語(yǔ)法、優(yōu)先級(jí)和結(jié)合性。除 ++、 和逗號(hào) (, )之外,所有整型運(yùn)算符都能支持。提供方冪運(yùn)算符“ **”。命名的參數(shù)可以在算術(shù)表達(dá)式中直接利用名稱(chēng)訪(fǎng)問(wèn),前面不帶“ $”符號(hào)。當(dāng)訪(fǎng)問(wèn)命名參數(shù)時(shí),就作為算術(shù)表達(dá)式計(jì)算它的值。算術(shù)表達(dá)式按長(zhǎng)整數(shù)進(jìn)行求值,不檢查溢出。但用 0作除數(shù)就會(huì)產(chǎn)生錯(cuò)誤。 let 命令的替代表示形式是: ((算術(shù)表達(dá)式 )) 例如, let ″j=i*6+2″等價(jià)于 ((j=i*6+2))。 如果表達(dá)式的值是非 0,那么返回狀態(tài)值 0;否則返回狀態(tài)值 1。當(dāng)表達(dá)式中有 shell的特殊字符時(shí),必須用雙引號(hào)將其括起來(lái)。 【 例 】 如 , let ″val=a|b″。如果不括起來(lái), shell會(huì)把命令行 let val=a|b中的“ |”看成管道符,將其左右兩邊看成不同的命令,因而無(wú)法正確計(jì)算表達(dá)式的值。 38 shell程序流程 ? shell具有一般高級(jí)程序設(shè)計(jì)語(yǔ)言所具有的控制結(jié)構(gòu)等復(fù)雜功能,如 if語(yǔ)句、 case語(yǔ)句、循環(huán)結(jié)構(gòu)和函數(shù)等。 ? 測(cè)試語(yǔ)句 test ? 條件測(cè)試有三種常用形式:一是 test命令,二是一對(duì)方括號(hào),這兩種形式是完全等價(jià)的。三是兩對(duì)方括號(hào),即 [[ 條件表達(dá)式 ]]。 test命令可以和多種系統(tǒng)運(yùn)算符一起使用,這些運(yùn)算符可以分為四類(lèi):文件屬性及權(quán)限測(cè)試運(yùn)算符、字符串測(cè)試運(yùn)算符、數(shù)值測(cè)試運(yùn)算符和邏輯運(yùn)算符。與傳統(tǒng)語(yǔ)言不同, shell用于指定條件值的不是布爾表達(dá)式而是命令和字符串。 39 test測(cè)試命令用法 ? Test命令用于檢查某個(gè)條件是否成立,它可以進(jìn)行數(shù)值、字符和文件三個(gè)方面的測(cè)試,其測(cè)試符和相應(yīng)的功能分別如表 。 ? test可以對(duì)字符串、整數(shù)和文件進(jìn)行條件測(cè)試。 ? Linux還提供了與 (“!”)、或(“ o”)、非(“ a”)三個(gè)邏輯操作符用于將測(cè)試條件連接起來(lái),其優(yōu)先級(jí)為:“!”最高,“ a”次之,“ o”最低。 ? test命令的格式為: ? test expression 或者 [ expression ] ? 其中的 expression是被測(cè)試的條件。若 test expression或者[ expression ]的結(jié)果為真,則返回 0,否則非 0。注意expression和 [ ]之間必須有空格。 40 字符串比較 ? 字符串比較可以測(cè)試字符串長(zhǎng)度是否為 0以及兩個(gè)字符串是否相等。下面用例子來(lái)說(shuō)明對(duì)字符串進(jìn)行測(cè)試的方法。 ? 【 例 】 判斷兩個(gè)字符串是否相同。 ? $ test ?long? = ?long?; echo $? ? 0 ? $ test ?long? = ?short? ; echo $? ? 1 ? 值得注意的是在“ =”號(hào)兩邊一定要有空格,否則就會(huì)產(chǎn)生賦值歧義。 ? 使用 test測(cè)試字符串時(shí)要注意的問(wèn)題:向 test傳遞的各自變量間必須有空白符,如果“ =”與任一自變量之間沒(méi)有空白字符就會(huì)產(chǎn)生錯(cuò)誤。在用變量值替換的自變量上,必須用雙引號(hào)括起來(lái),以保證 test在變量的值為空時(shí)也能接收到該自變量,這是一種良好的 shell程序設(shè)計(jì)風(fēng)格。 41 數(shù)字比較 ? test 命令可以用來(lái)比較整數(shù)?;菊Z(yǔ)法是: ? test int1 op int2或者 [ int1 op int 2] ? 其中 int1 和 int2 可以是任何正整數(shù)或負(fù)整數(shù)。 ? 【例】 ? $ x1=” 005” ? $ x2=” 10” ? $ test “ $x1” = 5 ? $ echo $? ? 1 ? 【例】 把 005 , 5當(dāng)作字符串來(lái)看待。當(dāng)使用整數(shù)比較操作符時(shí),把 005, 5當(dāng)作整數(shù)來(lái)看待,整數(shù)的 005和 5是相等的。 42 文件測(cè)試 ? 文件測(cè)試表達(dá)式測(cè)試一個(gè)文件是否滿(mǎn)足特殊條件,其通用語(yǔ)法是: ? test option name或者 [ option name ] ? 其中 nam
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1