Shell if else語句

if 語句通過關系運算符判斷表達式的真假來決定執行哪個分支。Shell 有三種 if ... else 語句:

  • if ... fi 語句;
  • if ... else ... fi 語句;
  • if ... elif ... else ... fi 語句。

1) if ... else 語句

if ... else 語句的語法:

if [ expression ]
thenStatement(s) to be executed if expression is true
fi

如果?expression 返回 true,then 后邊的語句將會被執行;如果返回 false,不會執行任何語句。

最后必須以 fi 來結尾閉合 if,fi 就是 if 倒過來拼寫,后面也會遇見。

注意:expression 和方括號([ ])之間必須有空格,否則會有語法錯誤。

舉個例子:

  1. #!/bin/sh
  2. a=10
  3. b=20
  4. if [ $a == $b ]
  5. then
  6. echo "a is equal to b"
  7. fi
  8. if [ $a != $b ]
  9. then
  10. echo "a is not equal to b"
  11. fi

運行結果:

a is not equal to b

2)?if ... else ... fi 語句

if ... else ... fi 語句的語法:

if [ expression ]
thenStatement(s) to be executed if expression is true
elseStatement(s) to be executed if expression is not true
fi

如果 expression 返回 true,那么 then 后邊的語句將會被執行;否則,執行 else 后邊的語句。

舉個例子:

  1. #!/bin/sh
  2. a=10
  3. b=20
  4. if [ $a == $b ]
  5. then
  6. echo "a is equal to b"
  7. else
  8. echo "a is not equal to b"
  9. fi

執行結果:

a is not equal to b

3)?if ... elif ... fi 語句

if ... elif ... fi 語句可以對多個條件進行判斷,語法為:

if [ expression 1 ]
thenStatement(s) to be executed if expression 1 is true
elif [ expression 2 ]
thenStatement(s) to be executed if expression 2 is true
elif [ expression 3 ]
thenStatement(s) to be executed if expression 3 is true
elseStatement(s) to be executed if no expression is true
fi

哪一個?expression 的值為 true,就執行哪個 expression 后面的語句;如果都為 false,那么不執行任何語句。

舉個例子:

  1. #!/bin/sh
  2. a=10
  3. b=20
  4. if [ $a == $b ]
  5. then
  6. echo "a is equal to b"
  7. elif [ $a -gt $b ]
  8. then
  9. echo "a is greater than b"
  10. elif [ $a -lt $b ]
  11. then
  12. echo "a is less than b"
  13. else
  14. echo "None of the condition met"
  15. fi

運行結果:

a is less than b


if ... else 語句也可以寫成一行,以命令的方式來運行,像這樣:

  1. if test $[2*3] -eq $[1+5]; then echo 'The two numbers are equal!'; fi;


if ... else 語句也經常與 test 命令結合使用,如下所示:

  1. num1=$[2*3]
  2. num2=$[1+5]
  3. if test $[num1] -eq $[num2]
  4. then
  5. echo 'The two numbers are equal!'
  6. else
  7. echo 'The two numbers are not equal!'
  8. fi

輸出:

The two numbers are equal!

test 命令用于檢查某個條件是否成立,與方括號([ ])類似。

轉載于:https://www.cnblogs.com/yang-hao/p/5969252.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373669.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373669.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373669.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

過濾日志中不相關的堆棧跟蹤行

我喜歡堆棧痕跡。 不是因為我喜歡錯誤,而是因為發生錯誤的那一刻,堆棧跟蹤是無價的信息源。 例如,在Web應用程序中,堆棧跟蹤向您顯示完整的請求處理路徑,從HTTP套接字到過濾器,Servlet,控制器&a…

Can't create/write to file '/tmp/#sql_887d_0.MYD' (Errcode: 17)

lsof |grep "#sql_887d_0.MYD" 如果沒有被占用就可以刪掉 。 https://wordpress.org/support/topic/cant-createwrite-to-file-error Hello, just today I saw this kind of error on every page on my blog. WordPress database error: [Cant create/write to file …

python3怎么創建文件_Python3.5 創建文件的簡單實例

實例如下所示:#codingutf-8Created on 2012-5-29author: xiaochouimport osimport timedef nsfile(s):The number of new expected documents#判斷文件夾是否存在,如果不存在則創建b os.path.exists("E:\\testFile\\")if b:print("File …

Dijkstra 最短路算法(只能計算出一條最短路徑,所有路徑用dfs)

上周我們介紹了神奇的只有五行的 Floyd 最短路算法,它可以方便的求得任意兩點的最短路徑,這稱為“多源最短路”。本周來來介紹指定一個點(源點)到其余各個頂點的最短路徑,也叫做“單源最短路徑”。例如求下圖中的 1 號…

JavaScript學習隨記——錯誤類型

錯誤類型: 執行代碼期間可能會發生的錯誤有多種類型。每種錯誤都有對應的錯誤類型,而當錯誤發生時,就會拋出相應類型的錯誤對象。 ECMA-262定義的7種錯誤類型 Error: 是錯誤的基類型,其他錯誤類型都繼承該類型。Error…

多個集合中的共同和獨特元素

本周,我們將暫時中斷較高級別的問題和技術文章,以解決我們中許多人可能面臨的一些代碼問題。 沒什么花哨的或太辛苦的,但是有一天它可能會節省您15分鐘的時間,偶爾回到基礎上也很不錯。 因此,讓我們開始吧。 有時&…

2016給自己一個交代

一、前言 在關于技術上的學習,常常有這樣那樣的計劃,而最終一個都沒有真正的落實。零散的學習,終究需要系統總結,才能使自己有所沉淀。從畢業至今,我一直在忙碌,為公司付出自己的很多很多,卻只不…

洛克人紅色思考型機器人叫什么_稻船敬二新企劃《紅色灰燼》 依然是機器人風格...

稻船敬二離開CAPCOM之后玩家們紛紛感嘆《洛克人》系列將再無續作,不過在單飛的這段時間里,稻船敬二還是創作了諸如《蒼藍雷霆 剛巴爾特》《Mighty No.9》等類似洛克人風格的作品。其名下的團隊comcept的最新作《Mighty No.9》即將于9月18日發售&#xff…

常見對話框

(1)普通對話框 // 點擊按鈕 彈出一個普通對話框public void click1(View v) {// 構建AlertDialogAlertDialog.Builder builder new Builder(this);builder.setTitle("警告");builder.setMessage("世界上最遙遠的距離是沒有網絡");builder.setPositiveButt…

JavaScript學習隨記——面向對象編程(繼承)

Example:基于原型鏈的繼承 <!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>面向對象編程&#xff08;OOP&#xff09;</title></head> <body>…

NSCharacterSet

先上個例子&#xff1a; NSString * str1 [nameInput.textstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; NSString * str2 [passwdInput.textstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; […

Apache Mahout:構建垃圾郵件過濾器服務器

Lucene發生了一些相當有趣的事情。 它最初是作為一個庫&#xff0c;然后其開發人員開始基于它添加新項目。 他們開發了另一個開源項目&#xff0c;該項目將向Lucene添加爬網功能&#xff08;以及其他功能&#xff09;。 Nutch實際上是任何人都可以使用或修改的功能齊全的Web Se…

建模步驟_古建設計 | sketchup建模步驟教程(簡易入門版)

前言本篇教程主要是針對古建建模入門者。小N給大家分享一套我相對簡易的建模步驟。(PS&#xff1a;但是估計有些人可能會感覺我做的東西已經繁瑣了……)因為主要是為了讓大家熟悉、入門和好記憶。所以講的東西&#xff0c;小N我會相對簡單&#xff0c;有些細節的內容不會更多展…

JavaScript模塊化

JavaScript模塊化的實現方式&#xff1a; <!DOCTYPE HTML> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><title>模塊化</title></head> <body><script type&quo…

Linux下面的IO模型

1. Linux下的五種I/O模型 阻塞I/O模型&#xff1a; 一直阻塞 應用程序調用一個IO函數&#xff0c;導致應用程序阻塞&#xff0c;等待數據準備好。 如果數據沒有準備好&#xff0c;一直等待….數據準備好了&#xff0c;從內核拷貝到用戶空間,IO函數返回成功指示。 我們 第一…

改變導航欄上邊的狀態欄顏色

#pragma mark - 改變狀態欄顏色 -(UIStatusBarStyle)preferredStatusBarStyle{ return UIStatusBarStyleLightContent; }轉載于:https://www.cnblogs.com/block123/p/5195203.html

PIT和TestNG突變測試簡介

變異測試是一種技術&#xff0c;它可以發現測試未涵蓋代碼的哪些部分。 它類似于代碼覆蓋范圍 &#xff0c;但變異測試不限于在測試期間執行給定行的事實。 這個想法是修改生產代碼&#xff08;引入突變&#xff09;&#xff0c;這應該改變其行為&#xff08;產生不同的結果&am…

JavaScript內存管理——優化內存占用

使用具備垃圾收集機制的語言編寫程序&#xff0c;開發人員一般不必操心內存管理的問題。但是&#xff0c;JavaScript在進行內存管理及垃圾收集時面臨的問題還是有點與眾不同。其中最主要的一個問題&#xff0c;就是分配給Web瀏覽器的可用內存數量通常要比分配給桌面應用程序的少…

Java 8的烹調方式– Lambda項目

什么是project lambda &#xff1a;Project lambda是用于以Java語言語法啟用lambda表達式的項目。 Lambda表達式是功能編程語言&#xff08;如lisp&#xff09;中的主要語法。 Groovy將是支持lambda表達式&#xff08;也稱為閉包&#xff09;的java的最接近親戚。 那么什么是la…

ffmpeg文檔38-視頻源

38 視頻源 下面是當前有效的視頻源 buffer 緩沖視頻幀&#xff0c;其可以作為濾鏡鏈圖的環節 它通常用于編程&#xff0c;特別是通過libavfilter/vsrc_buffer.h的接口。 接受如下參數&#xff1a; video_size 指定視頻尺寸&#xff0c;(同時指定width 和 height)。語法同于ffmp…