溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

shell腳本學習-語法篇

發(fā)布時間:2020-08-05 14:58:57 來源:網(wǎng)絡 閱讀:736 作者:走走停停吧 欄目:編程語言

一. 條件測試:test [
命令test或[可以測試一個條件是否成立,如果測試結(jié)果為真,則該命令的Exit Status為0,如果測 試結(jié)果為假,則命令的Exit Status為1(注意與C語言的邏輯表示正好相反)。

二。if/then/elif/else/fi
和C語言類似,在Shell中用if、then、elif、else、fi這幾條命令實現(xiàn)分支控制。這種流程控制語
句本質(zhì)上也是由若干條Shell命令組成的,其實是三條命令,if [ -f ~/.bashrc ]是第一條,then . ~/.bashrc是第二條,fi是第三條。如 果兩條命令寫在同一行則需要用;號隔開,一行只寫一條命令就不需要寫;號了,另外,then后面有 換行,但這條命令沒寫完,Shell會自動續(xù)行,把下一行接在then后面當作一條命令處理。和[命令 一樣,要注意命令和各參數(shù)之間必須用空格隔開。if命令的參數(shù)組成一條子命令,如果該子命令的Exit Status為0(表示真),則執(zhí)行then后面的子命令,如果Exit Status非0(表示假),則執(zhí) 行elif、else或者fi后面的子命令。if后面的子命令通常是測試命令,但也可以是其它命 令。Shell腳本沒有{}括號,所以用fi表示if語句塊的結(jié)束

三.case命令可類比C語言的switch/case語句,esac表示case語句塊的結(jié)束。C語言的case只能匹配整型或字符型常量表達式,而Shell腳本的case可以匹配字符串和Wildcard,每個匹配分支可
以有若干 條命令,末尾必須以;;結(jié)束,執(zhí)行時找到第一個匹配的分支并執(zhí)行相應的命令,然后直
接跳 到esac之后,不需要像C語言一樣用break跳出。

四.for/do/done

五.5. while/do/done
while的用法和C語言類似

六.函數(shù)

和C語言類似,Shell中也有函數(shù)的概念,但是函數(shù)定義中沒有返回值也沒有參數(shù)列表。例如:
注意函數(shù)體的左花括號{和后面的命令之間必須有空格或換行,如果將最后一條命令和右花括
號}寫 在同一行,命令末尾必須有;號。
在定義foo()函數(shù)時并不執(zhí)行函數(shù)體中的命令,就像定義變量一樣,只是給foo這個名字一個定
義, 到后面調(diào)用foo函數(shù)的時候(注意Shell中的函數(shù)調(diào)用不寫括號)才執(zhí)行函數(shù)體中的命令。
Shell腳本中的函數(shù)必須先定義后調(diào)用,一般把函數(shù)定義都寫在腳本的前面,把函數(shù)調(diào)用和其它
命令寫在腳本 的最后(類似C語言中的main函數(shù),這才是整個腳本實際開始執(zhí)行命令的地方)。
Shell函數(shù)沒有參數(shù)列表并不表示不能傳參數(shù),事實上,函數(shù)就像是迷你腳本,調(diào)用函數(shù)時可以傳
任 意個參數(shù),在函數(shù)內(nèi)同樣是用$0、$1、$2等變量來提取參數(shù),函數(shù)中的位置參數(shù)相當于函數(shù)
的局部 變量,改變這些變量并不會影響函數(shù)外面的$0、$1、$2等變量。函數(shù)中可以用return
命令返回,如 果return后面跟一個數(shù)字則表示函數(shù)的Exit Status。

例如:

shell腳本學習-語法篇

shell腳本學習-語法篇

shell腳本學習-語法篇


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI