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

正文內容

shell基礎與編程技術講義-文庫吧資料

2025-03-17 17:16本頁面
  

【正文】 e和 false兩個命令。當使用整數(shù)比較操作符時,把 005, 5當作整數(shù)來看待,整數(shù)的 005和 5是相等的。基本語法是: ? test int1 op int2或者 [ int1 op int 2] ? 其中 int1 和 int2 可以是任何正整數(shù)或負整數(shù)。在用變量值替換的自變量上,必須用雙引號括起來,以保證 test在變量的值為空時也能接收到該自變量,這是一種良好的 shell程序設計風格。 ? $ test ?long? = ?long?; echo $? ? 0 ? $ test ?long? = ?short? ; echo $? ? 1 ? 值得注意的是在“ =”號兩邊一定要有空格,否則就會產生賦值歧義。下面用例子來說明對字符串進行測試的方法。注意expression和 [ ]之間必須有空格。 ? test命令的格式為: ? test expression 或者 [ expression ] ? 其中的 expression是被測試的條件。 ? test可以對字符串、整數(shù)和文件進行條件測試。與傳統(tǒng)語言不同, shell用于指定條件值的不是布爾表達式而是命令和字符串。三是兩對方括號,即 [[ 條件表達式 ]]。 38 shell程序流程 ? shell具有一般高級程序設計語言所具有的控制結構等復雜功能,如 if語句、 case語句、循環(huán)結構和函數(shù)等。 【 例 】 如 , let ″val=a|b″。 如果表達式的值是非 0,那么返回狀態(tài)值 0;否則返回狀態(tài)值 1。但用 0作除數(shù)就會產生錯誤。當訪問命名參數(shù)時,就作為算術表達式計算它的值。提供方冪運算符“ **”。 37 算術運算 bash中的整數(shù)算術運算命令是 let,其語法格式為: let arg … 其中 arg是單獨的算術表達式,使用的是 C語言中表達式的語法、優(yōu)先級和結合性。變量 2的值取決于變量 1(參數(shù))是否為空串、用什么操作符及字符串的取值。 LOGNAME是用戶登錄名 SECONDS是指當前運行的 bash進程的運行時間 (以秒為單位 ) HOME是指用戶 home目錄的路徑名,是 cd命令的默認參數(shù) COLUMNS是指定義了命令編輯模式下可使用命令行的長度 EDITOR是指默認的行編輯器 IFS是定義 SHELL使用的分隔符 TMOUT SHELL指自動退出時間(秒),設為 0禁止 SHELL自動退出 PS1是指主命令提示符 PS2指二級命令提示符,要求輸入數(shù)據時用 PS3是 select的命令提示符 PS4是指調試命令提示符 LD_LIBRARY_PATH是指尋找?guī)斓穆窂?,以冒號分隔? USER是指用戶賬號 MAIL是指系統(tǒng)信箱的路徑。 36 環(huán)境變量與置換變量 PWD是指用戶當前目錄的全名 PPID是指父進程 ID $是指當前進程 ID UID是指當前用戶的 User ID PATH是指查找命令的目錄列表。 $ 它與 $*基本功能相同,但“ $”與“ $*”不同。例如: set xv 這個命令行給 shell設置了標志 x和 v(用于跟蹤輸出)。 $!上一個后臺命令對應的進程號,是由 1~5位數(shù)字構成的數(shù)字串。多數(shù) shell命令執(zhí)行成功時,返回值為 0;執(zhí)行失敗則返回非 0值。 $ 命令行上實際參數(shù)的個數(shù),不包含 shell文件名。 35 預定義特殊變量 shell中預定義的特殊含義的 shell變量值只能由 shell根據實際情況賦值,不能通過用戶重新設置??梢钥闯?, shift命令執(zhí)行后新 $1的值是原 $2的值,新 $2的值是原 $3的值,依此類推。每執(zhí)行一次 shift命令,就把命令行上的實參向左移一位,即相當于位置參數(shù)向右移動一個位置,如表 。 34 ? 如果在腳本中使用的位置參數(shù)不超過 9個,那么只用 $1~$9即可。ls。因為它們與命令行上具體位置的實參相對應:命令名(文件名)對應位置變量 0,第一個實參對應位置變量 1,第二個實參對應位置變量 2…… 如果位置變量是由兩個或更多個數(shù)字構成,必須把它們用一對花括號括起來,如 {10}、 {11}。如果變量個數(shù)與給定數(shù)據個數(shù)相同,則依次對應賦值;如果變量個數(shù)少于數(shù)據個數(shù),則從左至右對應賦值,但最后一個變量被賦予剩余的所有數(shù)據;如果變量個數(shù)多于給定數(shù)據個數(shù),則依次對應賦值,而沒有數(shù)據與之對應的變量取空串。 read命令的一般格式是: ? read 變量 1 [ 變量 2 …] 。 表達式 ${name[*]}和 ${name[]}的值都是數(shù)組 name的元素個數(shù)。 表達式 ${}和 ${*}的值分別是由 $和 $*返回的參數(shù)的個數(shù)。 表達式 ${name % pattern}和 ${name %% pattern},如果 pattern與 name值的末尾匹配,那么 name的值中去掉匹配部分后的結果就是該表達式的值;否則,該表達式的值就是 name的值。否則, name的值就是該表達式的值。如果數(shù)組 name中沒有元素,則 ${name[]}被擴展為空串。 表達式 ${name[*]}和 ${name[]}都表示數(shù)組 name中所有非空元素值,用空格分開。替換后花括號被取消。 表達式 ${name}將被變量 name的值替換。使用 *或 做下標,則會以數(shù)組中所有元素取代 [*]或 []。 A[6]超出了數(shù)組 A范圍,被認為是新元素,由于沒有賦值,所以是空串。形式是: 數(shù)組名 =(值 1 值 2 ... 值 n) ;其中各個值之間以空格分開。形式是: 數(shù)組名 [下標 ]=值。下標是整數(shù)或算術表達式,值 =0。和 C類似,數(shù)組元素下標由 0開始。 ? !/bin/bash ? declare i a=2 ? declare i b=3 ? declare i c=$a+$b ? echo $c ? 這樣出來的結果才能是 5。若不加上參數(shù),則顯示全部的 shell變量與函數(shù) (與執(zhí)行 set指令的效果相同 )。 28 變量的類型聲明 ? Bash中變量的類型聲明一般用關鍵詞 declare,其語法格式為: ? declare [+/][rxia][變量名稱=設置值 ] ? 其所帶的參數(shù)含義是: [/+]a 設置 /撤消變量的數(shù)組屬性; [/+]i 設置 /撤消變量的整數(shù)屬性,但變量可以是數(shù)值,字符串或運算式; [/+]r 設置 /撤消變量的只讀屬性; [/+]x 設置 /撤消變量輸出屬性,指定變量為環(huán)境變量供 shell外程序使用; p 顯示變量屬性; f定義函數(shù)或僅顯示函數(shù)。 ? $ 傳入腳本的命令行參數(shù)個數(shù); ? $* 所有命令行參數(shù)值,在各個參數(shù)值之間留有空格; 27 ? 為了使某個變量存在于一個局部程序塊中,引入了局部變量的概念。 26 【 例 】 關鍵字 let的應用 ? !/bin/bash ? x=2023 ? let x = $x + 1 ? echo $x ? x=a string. ? echo $x ? 關于整數(shù)變量計算,有如下幾種: + * / % ,它們的意思和字面意思相同,在 *和 /之前必須冠以反斜線,以免被 SHELL先行解釋。例如:將當前工作目錄的全路徑名存放到變量dir中,可以輸入以下命令行: ? $ dir=`pwd` 或 $ dir=$(pwd) ? 一個變量可以是字符串,或再定義為整數(shù)。例如 : ? names=Zhangsan Lisi Wangwu ? 可以將一個命令的執(zhí)行結果賦值給變量。在程序中使用變量值,要在變量名前面加上一個符號“ $”。定義變量并賦值的一般形式是:變量名 =字符串 ? 例如: myfile=/usr/meng/ff/ 25 ? 變量值的改變,只須利用賦值語句重新賦值。這與 C語言中標識符的定義相同。變量名以字母或下劃線開頭的字母、數(shù)字和下劃線序列,且大小寫字母意義不同。對于 bash可以通過變量名來訪問相應的環(huán)境變量,通過export來設置環(huán)境變量。顯然, shell變量是局部的,而環(huán)境變量是全局的。它們包含兩組不同的變量:shell變量和環(huán)境變量。如 if [ x /root ] 可用來判斷當前用戶是否可以進入 /root 目錄。判斷整數(shù)變量 a 是否大于 b就寫作: if [ $a gt $b ] 。判斷整數(shù) a和 b是否相等就寫做 if [ $a = $b ],判斷整數(shù) a是否大于整數(shù) b就寫做 if [ $a gt $b ]。在變量賦值時,“ =”左右兩邊都不能有空格, Bash語句的結尾不加分號 ; 。 ? Bash作為常用的 shell,其變量和 C變量有區(qū)別,值得注意的問題有: ? Bash變量在引用時要在變量前加 $符。環(huán)境變量是永久性變量,其值不會隨shell腳本執(zhí)行結束而消失。 23 shell變量 ? shell用變量存放字符串,變量沒有存儲類型,使用時直接定義并賦值。注釋行用來說明程序的功能、結構、算法和變量等,增加程序可讀性。在前面示例中已見過。 The time is ` date ` , the file is $HOME/abc 倒引號中的字符串被 shell解釋為命令行。例如, $ echo 39。轉義字符告訴 shell不對其后面的字符進行特殊處理,只當普通字符。 雙引號中的字符,除 $、倒引號 (`)和反斜線( \)仍保留其特殊功能外,其余字符均作為普通字符對待。例如 file*( .[cho]| .sh)是合法的模式表達式。 ? !(模式表 ) 除給定模式表中一個“模式”外,它可匹配其它任何東西。例如 file?(.c| .o)只匹配 file、 ,不匹配 file. c. o等。例如, file+(.c | .o)匹配文件 、 ,但不匹配 file。例如, file*(.c| .o)將匹配文件 file、 、 、 、 、 ,但不匹配 。 21 2. 模式表達式 ? 模式表達式是包含一個或多個通配符的字符序列。如 f[!19].c表示以 f開頭,后面一個字符不是數(shù)字 1至 9的 .c文件名,它匹配 、 。如 f[ad]與 f[abcd]作用相同。 ? “?”匹配任意一個字符,如 f ?匹配 f fa等,但不匹配 f、 fabc等。常用的通配符有四種: ? “ *”匹配任意字符 0或多次。在使用時應注意它們表示的意義和作用范圍。如果用戶輸入的是錯誤命令,系統(tǒng)會自動將出錯信息送到標準錯誤輸出即屏幕上。 ? 系統(tǒng)初始化時,將這 3個文件連接到相應的終端, 0對應鍵盤, 1對應屏幕, 2對應屏幕。如: “應用程序 2”命令就是把應用程序的輸出重定向到標準錯誤輸出中。如“應用程序 2 文件”或“應用程序 2 文件”則將應用程序產生的寫文件和標準錯誤輸出的全部信息一起寫入文件。 19 ? 通過命令、管道線和命令表,用戶可以完成各種從簡單到復雜的任務?!?||”表示條件為假( false)時才執(zhí)行后面的管道線。 ? 命令表中分隔命令的符號有“;”或換行符。管道重定向與 I/O重定向不同,前者直接把一個程序的輸出與另一個程序的輸入相連,不創(chuàng)建任何中間文件。管道線是由管道操作符分隔的幾個應用程序組成的序列。 ? 管道是把一個應用程序的標準輸出與另外一個應用程序的標準輸入相連接的有效工具。 shell通過管道、輸入輸出重定向以及程序設計的方法來實現(xiàn)這一功能。 ? 程序的主模塊是 case條件語句,根據命令行中第一個參數(shù)決定程序完成什么功能,并調用相應函數(shù)完成這個功能。 ? print( ) 函數(shù):輸出傳遞給它的文件的內容。 17 【 例 】 定義 4個函數(shù)并實現(xiàn)其功能 ? upper ( )函數(shù):將傳遞給它的文件中的字母轉換成大寫 ,并存放到同名的結尾為 .out的文件中。可以用 return命令立即退出函數(shù),其語法格式是: ? return [ n ] ? 其中的 n值是退出函數(shù)時的退出值(退出狀態(tài)),即 $?的值。執(zhí)行函數(shù)并不創(chuàng)建新的進程,是通過 shell進程執(zhí)行的。s begin now. ? echo $a $b $c ? echo $1 $2 $3 ? echo The end. ? } ? a= Working directory ? b=is ? c=`pwd` ? func Wele You Byby ? echo Today is ` date ` ? shell中的函數(shù)把若干命令集合在一起,通過函數(shù)名調用。變量值可以由 shell腳本傳遞給被調用函數(shù),而函數(shù)中所用的位置參數(shù)$ $2等對應于函數(shù)調用語句中的實參,這與普通命令不同。調用函數(shù)時直接利用函數(shù)名,不帶圓括號,與一般命令同樣使用。 ? 在函數(shù)定義時一般不帶參數(shù),而在調用函數(shù)時帶參數(shù)運行, shell此時把參數(shù)分別賦予相應的位置參數(shù) $ $ ....及 $*。函數(shù)定義的基本格式為: ? [function]函數(shù)名 ( ) ? { ? 若干命令行 ? } ? 其中關鍵字 function可以缺省。在 shell中定義的函數(shù)都是
點擊復制文檔內容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1