1. 程式人生 > >Shell陣列和函式

Shell陣列和函式

陣列中可以存放多個值。Bash Shell 只支援一維陣列(不支援多維陣列)。

Shell 陣列用括號來表示,元素用"空格"符號分割開,語法格式如下:

array_name=(value1 ... valuen)

2.陣列常用操作
1)定義一個數組: myarray=(1 2 3 4 5);
2)讀取陣列的某一個元素 :

echo ${myarray[下標值]}    
# 注意陣列名稱必須使用{} 括起來, 下標值從0開始編號;

3)陣列元素的賦值:

 myarray[下標值] = xxx  ;

4)顯示陣列的所有元素

echo ${myarray[*]}

5)獲得陣列的長度(元素的個數)

 echo    ${#array[@]}  
 或者    echo ${#array[*]}

6)刪除一個數組元素

 unset myarray[下標值]

陣列的遍歷:
#!/bin/bash

my_arry=(a b "c","d" abc)
echo "-------FOR迴圈遍歷輸出陣列--------"
for i in ${my_arry[@]};
do
  echo $i
done

陣列使用方法舉例

1.常規方法輸出陣列的所有元素,並進行獨立的處理
用 ${myarray[*]} 直接輸出的所有元素的個數,對陣列元素進行獨立操作的時候,不太方便,所以有必要。

 

 

2.有時候不知道陣列中元素的個數,因此陣列的長度事先是不知道的,因此此時,需要動態的擴充套件陣列長度與空間
 
# 執行方法:指令碼名server1 server2 server3 server...
 
# 獲得所有引數存入陣列
list=($*)
len=${#list[@]}

shell和函式的定義

1.linux shell 函式
將一組命令集或語句形成一個可用的塊

, 這些語句塊稱為函式。

2.shell 函式的組成

函式名:函式名字,注意一個指令碼中函式名要唯一,否則會引起呼叫函式紊亂。
函式體: 函式內部命令的集合,實現一個業務的功能。

3.shell 函式定義的格式

function  函式名()  

# function可以省略,注意()內部不帶任何引數。

{

命令1

命令2

. . .

}

 

 

四要素:

  1. 返回型別 (強)
  2. 函式名
  3. 引數列表
  4. 函式體

 

 

 

函式使用方法舉例

1.函式定義及引用例項一: 最簡單的定義及引用

function print_welcome()  #function可以去掉,注意括號裡不能有引數
{
    echo "演練函式的定義及引用方法:"
    echo "welcome,now time is `date`"
}
print_welcome #函式的名字,呼叫

 

 

2.函式定義及引用例項二:向函式傳遞引數演練
向函式傳遞引數就像在一般指令碼中使用特殊變數1, 2 … $ 9一樣,函式取得所傳引數後,最好先在函式內重新設定變數儲存所傳的引數。
程式功能:向函式傳遞一個變數值,對該變數值進行相關的運算,並輸出結果。

 

function sum()
{
    a1=$1
    a2=$2
 
        
    echo "演練函式內參數的傳遞的方法"
    if [ $# -eq 2] #如果引數的個數等於2
        then
            echo "符合函式要求的引數個數"
            
            let sum=a1+a2
        else
            echo "函式要求的引數個數不符,請重新輸入..."
    fi
    echo "$a1+$a2=$sum"
}
sum 10 90 #函式名和兩個引數,呼叫

 

 

3.函式檔案和指令碼檔案不在同一個檔案中

 

       . ./func_3.sh      #注意格式:點 空格 函式檔案地址