您好,登錄后才能下訂單哦!
一. 條件測試:test [
命令test或[可以測試一個條件是否成立,如果測試結果為真,則該命令的Exit Status為0,如果測 試結果為假,則命令的Exit Status為1(注意與C語言的邏輯表示正好相反)。
二。if/then/elif/else/fi
和C語言類似,在Shell中用if、then、elif、else、fi這幾條命令實現分支控制。這種流程控制語
句本質上也是由若干條Shell命令組成的,其實是三條命令,if [ -f ~/.bashrc ]是第一條,then . ~/.bashrc是第二條,fi是第三條。如 果兩條命令寫在同一行則需要用;號隔開,一行只寫一條命令就不需要寫;號了,另外,then后面有 換行,但這條命令沒寫完,Shell會自動續行,把下一行接在then后面當作一條命令處理。和[命令 一樣,要注意命令和各參數之間必須用空格隔開。if命令的參數組成一條子命令,如果該子命令的Exit Status為0(表示真),則執行then后面的子命令,如果Exit Status非0(表示假),則執 行elif、else或者fi后面的子命令。if后面的子命令通常是測試命令,但也可以是其它命 令。Shell腳本沒有{}括號,所以用fi表示if語句塊的結束
三.case命令可類比C語言的switch/case語句,esac表示case語句塊的結束。C語言的case只能匹配整型或字符型常量表達式,而Shell腳本的case可以匹配字符串和Wildcard,每個匹配分支可
以有若干 條命令,末尾必須以;;結束,執行時找到第一個匹配的分支并執行相應的命令,然后直
接跳 到esac之后,不需要像C語言一樣用break跳出。
四.for/do/done
五.5. while/do/done
while的用法和C語言類似
六.函數
和C語言類似,Shell中也有函數的概念,但是函數定義中沒有返回值也沒有參數列表。例如:
注意函數體的左花括號{和后面的命令之間必須有空格或換行,如果將最后一條命令和右花括
號}寫 在同一行,命令末尾必須有;號。
在定義foo()函數時并不執行函數體中的命令,就像定義變量一樣,只是給foo這個名字一個定
義, 到后面調用foo函數的時候(注意Shell中的函數調用不寫括號)才執行函數體中的命令。
Shell腳本中的函數必須先定義后調用,一般把函數定義都寫在腳本的前面,把函數調用和其它
命令寫在腳本 的最后(類似C語言中的main函數,這才是整個腳本實際開始執行命令的地方)。
Shell函數沒有參數列表并不表示不能傳參數,事實上,函數就像是迷你腳本,調用函數時可以傳
任 意個參數,在函數內同樣是用$0、$1、$2等變量來提取參數,函數中的位置參數相當于函數
的局部 變量,改變這些變量并不會影響函數外面的$0、$1、$2等變量。函數中可以用return
命令返回,如 果return后面跟一個數字則表示函數的Exit Status。
例如:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。