玩轉Bash指令碼:選擇結構之if,bash指令碼

來源:互聯網
上載者:User

玩轉Bash指令碼:選擇結構之if,bash指令碼

幾乎所有的程式設計語言中都有流程式控制制的概念,即順序結構、選擇結構和迴圈結構。

選擇結構也稱分支結構,比如C類語言中的 if 和 switch語句。

if的條件

前面我已經講過了test運算式及其簡化版 [  ] 運算子的使用,這些判斷的語句即可作為if結構的條件。

Bash shell中我們可以使用的任何能夠有真假判斷功能的命令(無論是內部命令,還是外部命令)都可以作為判斷的條件。

基本結構

Bash中的if同樣支援與if配對的else 和 else if的概念,只不過,else if在這裡寫法是 elif。

if語句基本結構是這樣:

if <條件1>then        語句1elif <條件2>         語句2elif <條件...>        語句...else        語句nfi

注意if語句中並無角括弧< >。用你的條件運算式來替換掉 <條件> 這部分。

實際根據你的需要使用elif和else。因為Bash不同於C語言,他沒有使用花括弧來閉合一個範圍的寫法。Bash的if語句閉合範圍使用的是 if 的“反語”——fi。

這是個有趣的現象,之後我們還會見到類似的寫法。

關於 then,if的條件後面都需要加一個保留字then。你也可以把它們寫作同一行,但是需要注意的是要用分號來分隔,這些bash解譯器才知道then不是if條件的一部分。否則會報錯。

if <條件>;then

寫法舉例test及 [  ]條件

輸入一個數字,並判斷是否小於100

#!/bin/bashread -p "請輸入一個數字:" aif [ $a -lt 100 ]then    echo "a<100"else    echo "a>=100"fi
判斷目前的目錄下一個檔案是否存在,若存在判斷是否為目錄檔案。

#!/bin/bashread -p "請輸入一個檔案名稱:" nameif [ -e $name ]then    echo -n "$name存在,"    if [ -d $name ]    then        echo "並且是一個目錄"    else        echo "但不是一個目錄"    fielse    echo "$name不存在"fi

其他命令作為條件

判斷當前環境中是否安裝了某一命令。

#!/bin/bashread -p "請輸入一個命令:" varif which $var>/dev/nullthen    echo "$var存在"else    echo "$var不存在"fi
這個指令碼,我命名為var.sh,請看它的執行結果

另外還有一點要注意。在c語言中,0為假,非0為真。而在Bash中正好相反。

不信你就在終端執行一下,which pwd這個命令。然後再使用 echo $?看看這個命令的執行狀態(或者理解為返回值)。

可以發現,echo $?的結果是0。而執行了which delete這個命令,再使用echo $?可以發現它的輸出是1。

當然了,除了which以外還有許多內部或外部的命令可以和 if 結構組合使用,和外部命令的無縫整合是Bash以及其他Shell強大的基礎。


bash shell 指令碼的if語句塊中怎更改if語句塊之外的變數值

if 條件陳述式中沒有"=="這樣的寫法,如果是數值應該這樣寫:
if [ $a -eq $b ] 注意空格
若$a,$b為字串,則應該這樣寫
if [ "$a" = "$b" ] 注意空格
 
怎不用指令檔直接bash執行if語句?

在命令終端裡,直接按照你寫出來的一行行地敲,
每敲完一行後按斷行符號,
系統檢測到語句沒結束,會用>符號提示你繼續敲的,直到那你敲完 fi 後斷行符號,系統檢測到if語句正常結束了才會執行。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.