shell指令碼編寫初學者指南4:條件&if-then語句

在shell指令碼編寫指南中,我們已經介紹了足夠多的基礎知識,您應該可以放心地進行實驗。在本週的部分中,我們將處理一些更有趣的事情,比如條件和“if-then”語句。...

shell指令碼編寫初學者指南4:條件&if-then語句

在shell指令碼編寫指南中,我們已經介紹了足夠多的基礎知識,您應該可以放心地進行實驗。在本週的部分中,我們將處理一些更有趣的事情,比如條件和“if-then”語句。

什麼是條件(conditi***)?

在日常語言中,我們說條件是發生某事必須滿足的條件。為了讓我的膝上型電腦能夠連線到網際網路,有幾個條件必須滿足,比如有一個ISP,調變解調器和/或路由器在,我的膝上型電腦在,等等。這很簡單,如果其中任何一個要求沒有滿足,結果-我的膝上型電腦連線到網際網路-不會發生。

計算領域的條件也是如此。我們可以測試一個字串是否匹配另一個字串,它是否不匹配另一個字串,甚至它是否存在。類似地,我們可以測試數值引數,看一個引數是否大於、小於或等於另一個引數。為了在滿足測試條件後發生一些事情,我們使用“if-then”語句。它們的格式非常簡單。

if CONDITION then command1 command2 … commandn fi

if語句

讓我們執行一個快速的小測試指令碼,好嗎?

if test $1 -gt $2 then echo “$1 is greater than $2” fi

shell指令碼編寫初學者指南4:條件&if-then語句

您將注意到,只有當該條件為真時,指令碼才會執行以下命令。否則,“if”語句將退出。如果在“If”語句之後有任何命令,那麼它們將正常執行。為了說明這一點,我在上述指令碼的末尾添加了以下行:

echo “This comes after the if statement”

shell指令碼編寫初學者指南4:條件&if-then語句

下面是一些您可能需要嘗試的其他數值運算子:

  • -等式:等於
  • -ne:不等於
  • -lt:小於
  • -le:小於或等於
  • -gt:大於
  • -ge:大於或等於

測試字串

現在,如果我們將指令碼的第一行修改為:

if test $1 = $2

然後條件將測試兩者是否相等。不過這裡有個陷阱!!使用等號(=)比較兩個字串,而不是數字。如果您想比較數字,您需要使用“-eq”運算子,類似於我們上面使用“-gt”的方式。

shell指令碼編寫初學者指南4:條件&if-then語句

現在,讓我們做另一個修改:

if test $1 != $2

shell指令碼編寫初學者指南4:條件&if-then語句

包含感嘆號(!)充當“not”修飾語。也就是說,它只在兩個字串不匹配時執行以下命令。

下面是一些可以使用的基於字串的測試的列表:

  • 字串:僅使用引數本身測試字串是否為空(null)或未以某種方式定義
  • -n string:這將測試字串是否為非空且已定義
  • -z字串:這將測試字串是否為空並且是這樣定義的

如果還有什麼?

我承認,那個片名絕對是個蹩腳的雙關語。好吧,如果測試為真,我們知道如何執行命令,但是如果測試為假,我們想執行另一個命令呢?我們可以透過在“if-then”語句中新增一個部分,即“else”來輕鬆地將兩者結合起來!

if CONDITION then command1 command2 … commandn else command1 command2 … commandn fi

讓我們編一個簡單的指令碼。

shell指令碼編寫初學者指南4:條件&if-then語句

所有的東西都有適當的壓痕。如果仔細觀察,您會注意到我們使用了方括號([和])而不是test命令。就我們的目的而言,它們在功能上是等價的,而且出於各種原因,您更可能看到方括號,因此我們將從現在開始使用它們。

以下是輸出的外觀:

shell指令碼編寫初學者指南4:條件&if-then語句

就這麼簡單!

我現在該怎麼辦?

既然您知道如何使用“if-then-else”語句,就可以執行可以執行測試的指令碼了。例如,您可以執行一個指令碼來計算檔案的md5雜湊值,然後將其與您在檔案中下載的雜湊值進行比較,以檢視它們是否匹配。

為了獲得一些好處,您可以建立一個具有“For”迴圈的指令碼,但是使用測試條件而不是從列表檔案中讀取行…

 


我們將在Shell指令碼初學者指南中看到一些更有趣的部分。如果您錯過了之前的課程,請檢視以下快速列表:

 

  1. Shell指令碼的基礎知識
  2. 用於迴圈
  3. 更基本的命令
  4. Linux shell之間有什麼區別?
  5. 如何使用基本正則表示式

如果您**或使用了利用測試條件、If-then-else語句和“for”迴圈的指令碼,請在註釋中與我們分享!

  • 發表於 2021-04-12 20:28
  • 閱讀 ( 50 )
  • 分類:網際網路

你可能感興趣的文章

r(r)和python(python)的區別

...者都是多正規化程式語言。它們支援面向物件程式設計、指令式程式設計、程序式程式設計等。 兩者都是口譯語言。 兩者都可以用來開發演算法。 兩者都是高階程式語言。 兩者都是免費和開源的。 兩者都可以與MySQL、Oracle等...

  • 發佈於 2020-10-20 09:33
  • 閲讀 ( 57 )

2021年面向開發者、雲工程師和devops的5大linux課程

...s課程。如果您是一名開發人員和devops工程師,對學習Linux指令碼的細微差別相當感興趣,那麼本課程將是對您的技能的一個很好的補充。 ...

  • 發佈於 2021-03-11 10:29
  • 閲讀 ( 59 )

使用簡單的shell指令碼修復html格式

... 為使用者提供額外的匯出選項,如PDF(透過if-then或case語句根據輸入新增選項)。 ...

  • 發佈於 2021-03-13 00:12
  • 閲讀 ( 48 )

用unity編寫遊戲:初學者指南

...“盒子裡的遊戲引擎”--一個物理和渲染引擎,帶有幾種指令碼語言的掛鉤,幾乎可以適應任何型別的影片遊戲。 ...

  • 發佈於 2021-03-13 11:55
  • 閲讀 ( 54 )

VisualStudio程式碼是mac的完美文字和指令碼編輯器

...一個匆忙衝出Windows版本的埠。程式碼對於簡單的自動化指令碼來說是很好的,但是外掛支援才是它真正的亮點。 ...

  • 發佈於 2021-03-14 07:11
  • 閲讀 ( 56 )

這個免費的ipad應用程式教你或你的孩子學習編碼

... 順序——你向計算機發出指令的順序。 事件——導致計算機執行某些操作的觸發器。 迴圈——重複的程式碼。 值或變數--數字的佔位符。 ...

  • 發佈於 2021-03-14 18:03
  • 閲讀 ( 54 )

用這些免費的線上互動式shell在瀏覽器中試用python

...兩個優點。首先,您可以使用基於選項卡的介面開啟多個指令碼,第二,如果您有一個站點,您可以將韋小寶嵌入到您自己的站點中。 ...

  • 發佈於 2021-03-15 00:25
  • 閲讀 ( 56 )

適合初學者的11個最佳樹莓圓周率專案

...如何透過簡單的使用者介面開啟和關閉**上的LED。提供了指令碼,因此您不需要在複雜的編碼過程中絆倒。透過檢視這些指令碼,您將學到很多關於如何為Pi設定基於web的應用程式的知識。 ...

  • 發佈於 2021-03-19 13:42
  • 閲讀 ( 61 )

什麼是applescript?編寫第一個mac自動化指令碼

如果你在編寫指令碼的世界裡感到舒服,並且在Mac上工作,AppleScript可能是你的自動化解決方案。AppleScript是一種功能強大的語言,只要它提供AppleScript庫,就可以控制任何應用程式。 ...

  • 發佈於 2021-03-20 16:33
  • 閲讀 ( 60 )

如何使用applescript將bash指令碼轉換為可單擊的應用程式

假設你是一個bash指令碼嚮導,喜歡為不太懂技術的朋友和家人自動化任務。即使你給了他們一個指令碼,完全解決了他們的問題,他們可能仍然擔心自己使用終端。在這種情況下,您不妨手動為它們執行所有操作。 ...

  • 發佈於 2021-03-21 09:39
  • 閲讀 ( 54 )