bash的執行結構續集

bash腳本編程(4)編程

case選擇分支結構:bash

case: case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esacide

在腳本中使用的case的結構:spa

case WORD in   //WORD應該是一個變量,若其不是變量,那麼他只能匹配到其自己設計

PATTERN1)    //被匹配到的選項後面須要加一個小括號,表示一樣功能的選項能夠用或字符隔開it

COMMANDio

...class

;;        //在執行完匹配後的命令後,須要用 ;;結尾變量

PATTERN2)可視化

COMMAND

...

;;

...

esac     //與if類似,case語句的結束的標誌爲esac

示例:

①當WORD爲變量時

#!/bin/bash
cs=$1    #經過用戶輸入$1參數值,並賦值給變量cs
case $cs in   #一樣case命令引用變量時須要用$ 符號
        n|name)
                echo "name:wang"
        ;;
        c)
                echo "constellation:aquarius"
        ;;
esac

[root@localhost ~]# bash ceshi3 n
name:wang
[root@localhost ~]# bash ceshi3 c
constellation:aquarius
[root@localhost ~]# bash ceshi3 name
name:wang

②當WORD爲非變量時

#!/bin/bash

case cs in        
        n|name)
                echo "name:wang"
        ;;
        cs)
                echo "constellation:aquarius"
        ;;
esac

[root@localhost ~]# bash ceshi3 
constellation:aquarius
最終cs只能匹配到cs選項



PATTERN(模式)能夠是下列幾類字符:

1.普通的文本字符;

2.Globbing風格的通配符;

*:任意長度的任意字符

?:任意單個字符;

[]:指定範圍內的任意單個字符;

[^]:指定範圍之外的任意單個字符;

3.|  :或字符



循環::::::

    

while循環結構

while: while COMMANDS; do COMMANDS; done

在腳本中能夠寫成下列結構:

while CONDITION ; do

COMMANDS

done

while循環進入循環的條件:CONDITION邏輯判斷結果爲真;

while循環退出循環的條件:CONDITION邏輯判斷結果爲假;


until循環結構

until: until COMMANDS; do COMMANDS; done

在腳本中能夠寫成下列結構:

until CONDITION ; do

COMMANDS

done

until循環進入循環的條件:CONDITION邏輯判斷結果爲假;

until循環退出循環的條件:CONDITION邏輯判斷結果爲真;

注意:

1.while CONDITION 至關於 until ! CONDITION

2.while和until循環結構中,沒有變量自增或自減的變化方法,所以須要使用語句手動給出變量的變化方式;

3.while和untile循環都須要有明確的結束條件,否則會進入無限的死循環中


示例:

    設計腳本計算1-100之間的和

#!/bin/bash
declare i=0
declare sum1=0
while [ $i -lt 100 ];do
        let i++
        let sum1=$[sum1+i]
done
echo $sum1

[root@localhost ~]# bash sum
5050

#!/bin/bash
declare i=0
declare sum1=0
until [ $i -eq 100 ];do
        let i++
        let sum1=$[sum1+i]
done
echo $sum1
~ 
[root@localhost ~]# bash sum
5050

循環控制語句:

    

循環控制語句:

continue


    提早結束當前循環,直接進入下一輪條件判斷,若是條件判斷結果仍然知足循環進入條件,則開啓下一輪循環;

break

    提早結束當前的循環,並且再也不繼續後續循環;

#!/bin/bash
declare i=0
declare sum1=0
until [ $i -eq 100 ];do
        let i++
                if [ $i -eq 50 ];then   #當i=50 時進行下面命令
                        continue        #跳過當前循環並進入下一輪判斷
                fi
        let sum1=$[sum1+i]

done
echo $sum1

[root@localhost ~]# bash sum
5000

最後結果 1-100全部數字和減去50

#!/bin/bash
declare i=0
declare sum1=0
until [ $i -eq 100 ];do
        let i++
                if [ $i -eq 50 ];then   #當i=50 時進行下面命令
                        break        #結束循環
                fi
        let sum1=$[sum1+i]

done
echo $sum1


[root@localhost ~]# bash sum
1225
最後獲得1-49之間全部整數的和

select循環結構

 select NAME [in WORDS ... ];do 

    COMMANDS

 done

select循環也是一種遍歷列表的方式建立一個可視化菜單,每一個列表項都有一個數字編號與之對應,供用戶選擇使用;而用戶只須要選擇其編號便可;

select是一種默認無限循環結構,所以,必須在循環體中爲select提供退出循環的條件,一般可使用break或exit命令實現

示例:

#!/bin/bash
select i in a b c d;do
        echo $i
done

[root@localhost ~]# bash sum
1) a
2) b
3) c
4) d
#? 1
a
#? 2
b
#? 3
c
#? 4
d
#? ^C   # 由於是無限循環因此使用Ctril+c 結束命令
[root@localhost ~]#

一般咱們將select和case命令聯合使用,以便退出

相關文章
相關標籤/搜索