shell學習(二) 函數+流程控制

程序=數據+數據操作

變量是數據的載體,函數是數據操作的載體。

 

一、函數(方法)

是程序中最小的功能(封裝)單元,在函數中一般封裝具有特定功能的實現。

優點:易讀易維護、實現功能複用。

聲明函數

[function 可選] 函數名(){

  函數體

}

======下面舉例:

hello(){

 echo "hello,this is a function."

}

調用函數:直接寫函數名稱即可。如 調用上面的 hello。

函數不調用不執行;必須先聲明再調用(因爲解釋器是從上到下來執行的),這是弱類型計算機語言的特點。

 

1、帶參數函數調用

          傳參函數,調用的時候直接輸入參數。

 

3、帶返回值的函數調用

     返回值建議用0或非0表示,0表示正常執行。不建議直接return結果。

練習:求周長/面積

二、流程控制 if case for while

1、分支之 if 的三種寫法

單分支

   舉例:      不滿足的情況沒提示。  if [ xxx ] then .... fi

雙分支

    舉例:      if [ xxx ]then....else...fi

多分支

     舉例:   

if [ xxx ]then....elif [ xxx ] then ... else...fi   (中間可多個elif 判斷)

 

2、分支之case(多分支實現)

   舉例:         區間判斷

case能實現的if elif可以實現,反之不一定。

case $name in

1)

    code;;

2)

   code;;

*)

   code;;

esac

另外說明,case可以進行區間判斷,但是區間範圍侷限於0-9,超出範圍則識別爲*那一類,即使寫的是[9-100]之類的。

 

3、循環之for的用法

https://blog.csdn.net/wzj_110/article/details/86669426   for...in的用法

格式1:

for 變量名 in 列表(v1 v2 ...v3)             --從列表中取出元素賦給變量

do

   循環體

done

格式2: seq a n b    ---a、b爲起始、終止值,n爲步長,不設置的話默認爲1.

for 變量名 in `seq 15`     --從1到15之間的所有整數序列,包括能取到1和15。  seq 5 15,指取到5-15的值。

do  xxx done

    

 

4、循環之while的用法

while [ xxx ]

do

   循環體

done

     

 

創建文件例子:

       

 

重定向

將命令結果作爲內容輸出到指定文件中。

1>>  命令正常執行,纔將結果輸出到文件中

2>>  命令執行失敗,將錯誤提示輸出到文件中

 

數組

和變量類似,也是數據的載體,數據可以存放多個值,變量一次性只能放一個值。

賦值數組:myvar =(v1 v2 v3 v4)   括號內多個值,進行賦值

查詢元素:

myvar[0]  myvar[1]   查詢值,用索引的方式,下標從0開始

myvar[*]  或 myvar[@]  獲取所有元素值

"${#myvar[*]}"    獲取元素個數,但是#要放在數組名之前。

修改數組元素:  myvar[0] = 100 ,直接重新給元素賦值即可。

刪除數組: unset myvar   和變量刪除一樣操作

   循環for遍歷讀取變量數組

 

傳參的方式:鍵盤輸入、命令行後面輸入、調用函數時傳遞。

 

 

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