bash編程語法總結,順序,循環,選擇

bash編程語法

    首先,我們先說下bash語法都有哪些內容,隨後我會隨後一一去分析,加強我記憶的同時也分享下給家。


     linux bash腳本的基本內容構架如下


#!/bin/bash   -----> 每個bash腳本第一行必須要寫的,告訴系統這是個bash腳本。    

#              -----> #爲註釋的標誌符號,#開頭的行都是腳本不執行的,僅用作註釋  

    命令段     -----> 腳本要執行的具體命令,來完成相應的功能


bash編程爲過程式編程語言,有3種主要語句即爲:


順序執行語句:最簡單的,至上而下執行語句,工作模式爲:

                #!/bin/bash

                #(可有可無)

                    語句1

                    語句2

              先執行語句1,再執行語句2,例如:

    創建腳本 bash1.sh

    wKiom1Pdu7HycSvmAAAUT6yyAQ4129.png

    輸出結果爲:hello !

            hao are you

    


循環執行語句:有3種,for循環,while循環,until循環

基本結構如下:()內的內容就是變量要依次讀出的內容,並要放到循環體中去執行的

            for 變量 in (列表); do

                循環體

            done

        循環體中的變量依次從列表中讀取數據,知道列表中的數據讀取完爲止,例如:

    我們求 1到100之間的所有整數的和爲例,

    創建腳本 bash2.sh  (for循環)

        wKiom1PdvZjCjGtYAAAZEZHMAE4718.png  

        

        圖中,i爲變量(bash編程中,變量無需提前定義),對變量取值要用$,如對i取值:$i

 但是,我們對於圖中的sun變量爲什麼要定義且賦予值0呢?,因爲我們要做累加運算,必須有個初值,比如你要算賬的話,必須知道算賬之前的賬單狀態,才能得出結果啊,也就是數據的初始化。

        {1..100}表示,1到100的所有整數1,2,3........99,100

        輸出結果爲5050,你可以自己驗證下

  

    while循環樣例

        while [條件測試]; do

            循環體

        done

        wKioL1PdxKvwNPytAAAaZium7Jk022.png 

        上圖中,counter=1,爲條件測試的變量counter的初始值,

                let counter++ , 爲循環體每執行一次,變量counter就自動+1,直到不滿足測試條件爲止,本題中,變量counter直到大於100,不滿足測試條件,循環結束,輸出最後結果爲5050   



    until循環:基本格式:

        until [條件測試]; do  #until的測試條件,爲真跳出循環,爲假則執行語句(看清楚)

                循環體

        done

   我們依然以1+2+3+.....+99+100爲例:

    wKiom1Pdxq3w3YTFAAAWtzDCdf0888.png

    看到圖中的測試條件了沒有,while循環時,判斷爲 -ge 意思 小於等於,

                            until循環時,判斷爲 -gt 意思 大於,相反,這個從單詞意思上就能看的出來,是不是這樣啊。    


這裏我們說到了比較符號,那就補充下吧,

bash編程中測試類型有:

整型測試:整數的比較

基本模式爲: [ $變量1 -gt $變量2 ]

    -gt 大於  

    -lt 小於

    -ge 大於等於

    -le 小於等於

    -ne  等於

    -ne  不等於

字符測試:(分爲單目和雙目)字符串的比較

    雙目:  

        >

        <

        =

        >=

        <=

    單目:

        -n String: 是否不空,不空則爲真,空則爲假

-z String: 是否爲空,空則爲真,不空則爲假

    


選擇語句:簡單比放下,你選擇

        wKiom1PdvrqyRiD5AAANyAwhhIQ841.png

        從A開始,選擇B,則執行1,選擇C,則執行2

      選擇語句一般有以下幾種,

單分支if語句

        最基本的格式:

            if [條件測試];then    #裏面的【條件測試】如果爲真,則執行語句1,爲假執行語句2

                語句1

            fi

            case

        我們來看下選擇語句的樣題:

        假如:如果我們輸入一個整數數a,如果此整數a爲偶數,則輸出A,其他則退出

        wKiom1PdypDgzEy7AAAUP0A_ev8320.png

        如果輸入2,則輸出 A,輸入3,則退出腳本,不顯示內容        

        上圖中,讓用戶輸入一個內容,的語句格式爲: read  -p  提示內容  變量

        來判斷一個數是否爲偶數,我們用取餘運算,但是發現了沒有,$[$num%2],我在$num%2的前面又加了一個$,意思爲,取運算完成後的數值與0進行比較,不加就會出現錯誤的哦

        

雙分支if語句,

            基本格式爲:

                if [條件測試];then

                    語句1

                else

                    語句2

                fi

        條件測試滿足即爲真時,執行語句1,否則執行語句2

        樣例:如果我們輸入一個整數數a,如果此整數a爲偶數,則輸出A,否則輸出B

            wKioL1PdzWWBxr7qAAAVBwUTBH8649.png

            上圖中,如果你輸入的爲2,則輸出A,輸入的爲3,則輸出B,你可以自己試下,

        還有個多分支if語句:

            格式爲:

            if [測試條件1]; then

                    語句1

            elif [測試條件2]; then

                    語句2

            elif [測試條件3]; then

                    語句3

                    ......

                    ......

            else

                    語句4

            fi

            意思爲,符合測試條件1,執行語句1,符合測試條件2,執行語句2,依次類推。

        例如,我們輸入一個數,如果輸入1,顯示A;輸入2,顯示B;輸入3,顯示C;輸入4,顯示D;輸入其他內容,則直接退出,並且顯示內容,請輸入(1|2|3|4),wKiom1PdzkbhskjXAAAisxSRhSU556.png

  最後還有個case語句,也輸入選擇語句的一種:

    格式如下: 

    case 變量  in

     條件1)

            語句1

            ;;

     條件2)

            語句2

            ;;

     條件3)

            ...

            ;;

     esac

    舉個例子吧,就用case語法寫一下上題那個if選擇語句,

    wKiom1Pd1E2CS5onAAAgo2g87hA690.png

    結果和if選擇樣題是一樣的,我測試過啦,才發出來的


bash中主要用到的基本內容就如上啦,其中有些,例如邏輯運算,變量的命名以及規則等,沒有做詳細介紹,有需要的可以問下,學而時習之,不辭下問都懂得。


函數的使用

    函數的一般語法
    function 函數名(){

            函數體

    }

    可以使用函數名進行函數的調用如:

    

#!/bin/bash

#

NO1() {

        if [ $1 -eq 1 ]; then

                echo "A"

        fi

}

NO2() {

        if [ $1 -eq 2 ]; then

                echo "B"

        fi

        return 0

}


NO3() {

        if [ $1 -eq 3 ]; then

                echo "C"

        fi

        return 0

}



NO4() {

        if [ $1 -ge 4 ]; then

                echo "please input (1|2|3)"

        fi

        return 1

}


read -p  "please input (1|2|3)" num

        NO1 $num   

        NO2 $num

        NO3 $num

        NO4 $num

上例用了很簡單的程序寫的。,雖然簡單,但基本說明了函數在bash編程中基本使用方式。

函數名 參數:意思爲把參數傳遞給對應的函數,

函數中變量$1:表示接受傳遞參數的變量

return 0  : 這個表示函數的返回值,每個函數調用執行完成後都會有個返回值的,當然可以自己指定。返回值


bash編程中的數組:
    數組是由   數組名+索引構成(索引指向的是數組中的元素)

    數組的聲明命令爲:decalare -a 數組名


    數組的賦值:

        整體賦值

                num=(1 2 3 4 5 6 7 8 9)

        單個賦值

                num[0]=1

                num[1]=2

                ...

                num[8]=9

        索引賦值

                num=([0]=a [1]=b [2]=c [3]=d)

     提示用戶對數組進行賦值的語句:

            read -a “提示語句” 數組名     ##看清,使用的是-a , 而非-p


    遍歷數組中的元素

            declare -a num

            num=(‘ls’)          #這裏引用ls命令獲取的結果賦值給數組num

            for i in $[$num[@]]; do 

                echo $num        輸出數組的所有元素

            done

    數組的長度格式:

                ${#ARRAY[*]}

${#ARRAY[@]}

        wKiom1PeGFHCMql_AAALVQqmV10383.png


    從數組中挑選出某個元素的基本格式如下:

                ${ARRAY[@]:offset:number}

切片:

offset: 偏移的元素個數

number: 取出的元素的個數


${ARRAY[@]:offset}:取出偏移量後的所有元素


${ARRAY[@]}: 取出所有元素

            wKiom1PeGCSQzYGQAAATQ6iUaNk141.png


           數組的實際運用樣例:  生成10個隨機數到一個數組中,並排序,

            

#!/bin/bash

declare -a sum

for i in {1..10}; do

        sum[$i]=$RANDOM

done

echo ${sum[@]}


for ((i=0;i<9;i++)); do

        for ((j=1;j<$[10-$i];j++)); do

                if [ ${sum[$j]} -gt ${sum[$[$j+1]]} ]; then

                        var=${sum[$j]}

                        sum[$j]=${sum[$[$j+1]]}

                        sum[$[$j+1]]=$var

                fi

        done

done

        echo ${sum[@]}  

其中用到了生成隨機數的命令:

        $RANDOM



            

    




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章