在shell指令碼編寫指南中,我們已經介紹了足夠多的基礎知識,您應該可以放心地進行實驗。在本週的部分中,我們將處理一些更有趣的事情,比如條件和“if-then”語句。
在日常語言中,我們說條件是發生某事必須滿足的條件。為了讓我的膝上型電腦能夠連線到網際網路,有幾個條件必須滿足,比如有一個ISP,調變解調器和/或路由器在,我的膝上型電腦在,等等。這很簡單,如果其中任何一個要求沒有滿足,結果-我的膝上型電腦連線到網際網路-不會發生。
計算領域的條件也是如此。我們可以測試一個字串是否匹配另一個字串,它是否不匹配另一個字串,甚至它是否存在。類似地,我們可以測試數值引數,看一個引數是否大於、小於或等於另一個引數。為了在滿足測試條件後發生一些事情,我們使用“if-then”語句。它們的格式非常簡單。
if CONDITION then command1 command2 … commandn fi
讓我們執行一個快速的小測試指令碼,好嗎?
if test $1 -gt $2 then echo “$1 is greater than $2” fi
您將注意到,只有當該條件為真時,指令碼才會執行以下命令。否則,“if”語句將退出。如果在“If”語句之後有任何命令,那麼它們將正常執行。為了說明這一點,我在上述指令碼的末尾添加了以下行:
echo “This comes after the if statement”
下面是一些您可能需要嘗試的其他數值運算子:
現在,如果我們將指令碼的第一行修改為:
if test $1 = $2
然後條件將測試兩者是否相等。不過這裡有個陷阱!!使用等號(=)比較兩個字串,而不是數字。如果您想比較數字,您需要使用“-eq”運算子,類似於我們上面使用“-gt”的方式。
現在,讓我們做另一個修改:
if test $1 != $2
包含感嘆號(!)充當“not”修飾語。也就是說,它只在兩個字串不匹配時執行以下命令。
下面是一些可以使用的基於字串的測試的列表:
我承認,那個片名絕對是個蹩腳的雙關語。好吧,如果測試為真,我們知道如何執行命令,但是如果測試為假,我們想執行另一個命令呢?我們可以透過在“if-then”語句中新增一個部分,即“else”來輕鬆地將兩者結合起來!
if CONDITION then command1 command2 … commandn else command1 command2 … commandn fi
讓我們編一個簡單的指令碼。
所有的東西都有適當的壓痕。如果仔細觀察,您會注意到我們使用了方括號([和])而不是test命令。就我們的目的而言,它們在功能上是等價的,而且出於各種原因,您更可能看到方括號,因此我們將從現在開始使用它們。
以下是輸出的外觀:
就這麼簡單!
既然您知道如何使用“if-then-else”語句,就可以執行可以執行測試的指令碼了。例如,您可以執行一個指令碼來計算檔案的md5雜湊值,然後將其與您在檔案中下載的雜湊值進行比較,以檢視它們是否匹配。
為了獲得一些好處,您可以建立一個具有“For”迴圈的指令碼,但是使用測試條件而不是從列表檔案中讀取行…
我們將在Shell指令碼初學者指南中看到一些更有趣的部分。如果您錯過了之前的課程,請檢視以下快速列表:
如果您**或使用了利用測試條件、If-then-else語句和“for”迴圈的指令碼,請在註釋中與我們分享!
...者都是多正規化程式語言。它們支援面向物件程式設計、指令式程式設計、程序式程式設計等。 兩者都是口譯語言。 兩者都可以用來開發演算法。 兩者都是高階程式語言。 兩者都是免費和開源的。 兩者都可以與MySQL、Oracle等...
...s課程。如果您是一名開發人員和devops工程師,對學習Linux指令碼的細微差別相當感興趣,那麼本課程將是對您的技能的一個很好的補充。 ...
... 為使用者提供額外的匯出選項,如PDF(透過if-then或case語句根據輸入新增選項)。 ...
...“盒子裡的遊戲引擎”--一個物理和渲染引擎,帶有幾種指令碼語言的掛鉤,幾乎可以適應任何型別的影片遊戲。 ...
...一個匆忙衝出Windows版本的埠。程式碼對於簡單的自動化指令碼來說是很好的,但是外掛支援才是它真正的亮點。 ...
... 順序——你向計算機發出指令的順序。 事件——導致計算機執行某些操作的觸發器。 迴圈——重複的程式碼。 值或變數--數字的佔位符。 ...
...兩個優點。首先,您可以使用基於選項卡的介面開啟多個指令碼,第二,如果您有一個站點,您可以將韋小寶嵌入到您自己的站點中。 ...
...如何透過簡單的使用者介面開啟和關閉**上的LED。提供了指令碼,因此您不需要在複雜的編碼過程中絆倒。透過檢視這些指令碼,您將學到很多關於如何為Pi設定基於web的應用程式的知識。 ...
如果你在編寫指令碼的世界裡感到舒服,並且在Mac上工作,AppleScript可能是你的自動化解決方案。AppleScript是一種功能強大的語言,只要它提供AppleScript庫,就可以控制任何應用程式。 ...
假設你是一個bash指令碼嚮導,喜歡為不太懂技術的朋友和家人自動化任務。即使你給了他們一個指令碼,完全解決了他們的問題,他們可能仍然擔心自己使用終端。在這種情況下,您不妨手動為它們執行所有操作。 ...