1. 程式人生 > >Shell在程式設計方面比Windows批處理強大很多,無論是在迴圈、運算。

Shell在程式設計方面比Windows批處理強大很多,無論是在迴圈、運算。

shell 變數迴圈自相加

n=5000

while true
do
    n=`expr $n + 1`;
    echo  "****************************************************[$n]\n"

done


Shell在程式設計方面比Windows批處理強大很多,無論是在迴圈、運算。

bash支援一維陣列(不支援多維陣列),並且沒有限定陣列的大小。類似與C語言,陣列元素的下標由0開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於0。

定義陣列

在Shell中,用括號來表示陣列,陣列元素用“空格”符號分割開。定義陣列的一般形式為:
    array_name=(value1 ... valuen)
例如:

   
  1. array_name=(value0 value1 value2 value3)
或者

   
  1. array_name=(
  2. value0
  3. value1
  4. value2
  5. value3
  6. )

還可以單獨定義陣列的各個分量:

   
  1. array_name[0]=value0
  2. array_name[1]=value1
  3. array_name[2]=value2
可以不使用連續的下標,而且下標的範圍沒有限制。

讀取陣列

讀取陣列元素值的一般格式是:
    ${array_name[index]}
例如:

   
  1. valuen=${array_name[2]}
舉個例子:

   
  1. #!/bin/sh
  2. NAME[
    0]="Zara"
  3. NAME[1]="Qadir"
  4. NAME[2]="Mahnaz"
  5. NAME[3]="Ayan"
  6. NAME[4]="Daisy"
  7. echo "First Index: ${NAME[0]}"
  8. echo "Second Index: ${NAME[1]}"
執行指令碼,輸出:
$./test.sh
First Index: Zara
Second Index: Qadir
使用@ 或 * 可以獲取陣列中的所有元素,例如:

   
  1. ${array_name[*]}
  2. ${array_name[@]}
舉個例子:

   
  1. #!/bin/sh
  2. NAME[0]="Zara"
  3. NAME[1]="Qadir"
  4. NAME[2]="Mahnaz"
  5. NAME[3]="Ayan"
  6. NAME[4]="Daisy"
  7. echo "First Method: ${NAME[*]}"
  8. echo "Second Method: ${NAME[@]}"
執行指令碼,輸出:
$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy

獲取陣列的長度

獲取陣列長度的方法與獲取字串長度的方法相同,例如:
複製純文字新視窗

   
  1. # 取得陣列元素的個數
  2. length=${#array_name[@]}
  3. # 或者
  4. length=${#array_name[*]}
  5. # 取得陣列單個元素的長度
  6. lengthn=${#array_name[n]}