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

bash編程語法linux

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


     linux bash腳本的基本內容構架以下數組


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

#              -----> #爲註釋的標誌符號,#開頭的行都是腳本不執行的,僅用做註釋  編程語言

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


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


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

                #!/bin/bash
spa

                #(無關緊要)
3d

                    語句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

相關文章
相關標籤/搜索