Shell腳本入門-5

數組中能夠存放多個值。Bash Shell 只支持一維數組(不支持多維數組),初始化時不須要定義數組大小(與 PHP 相似)。編程

與大部分編程語言相似,數組元素的下標由0開始。數組

Shell 數組用括號來表示,元素用"空格"符號分割開,語法格式以下:bash

array_name=(value1 ... valuen)

實例

#!/bin/bash
# author:ethan
my_array=(A B "C" D)

咱們也能夠使用下標來定義數組:編程語言

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

讀取數組

讀取數組元素值的通常格式是:學習

${array_name[index]}

實例

#!/bin/bash
# author:ethan

my_array=(A B "C" D)

echo "第一個元素爲: ${my_array[0]}"
echo "第二個元素爲: ${my_array[1]}"
echo "第三個元素爲: ${my_array[2]}"
echo "第四個元素爲: ${my_array[3]}"

執行腳本,輸出結果以下所示:spa

$ chmod +x test.sh 
$ ./test.sh
第一個元素爲: A
第二個元素爲: B
第三個元素爲: C
第四個元素爲: D

獲取數組中的全部元素

使用@ 或 * 能夠獲取數組中的全部元素,例如:code

#!/bin/bash
# author:ethan

my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "數組的元素爲: ${my_array[*]}"
echo "數組的元素爲: ${my_array[@]}"

執行腳本,輸出結果以下所示:索引

$ chmod +x test.sh 
$ ./test.sh
數組的元素爲: A B C D
數組的元素爲: A B C D

獲取數組的長度

獲取數組長度的方法與獲取字符串長度的方法相同,例如:字符串

#!/bin/bash
# author:ethan

my_array[0]=A
my_array[1]=B
my_array[2]=C
my_array[3]=D

echo "數組元素個數爲: ${#my_array[*]}"
echo "數組元素個數爲: ${#my_array[@]}"

執行腳本,輸出結果以下所示:class

$ chmod +x test.sh 
$ ./test.sh
數組元素個數爲: 4
數組元素個數爲: 4

Notes:

數組的值也能夠寫入變量。

例如:

A=1
my_array=($A B C D)
echo "第一個元素爲: ${my_array[0]}"
echo "第二個元素爲: ${my_array[1]}"
echo "第三個元素爲: ${my_array[2]}"
echo "第四個元素爲: ${my_array[3]}"

輸出爲:
第一個元素爲: 1第二個元素爲: B第三個元素爲: c第四個元素爲: D

根據數組元素索引獲取該數組元素值時,數組下標可爲變量。

例如:

arr=(a b c d)
i=2
echo ${arr[i]}

輸出爲:c

看數組的時候,以爲遍歷數組用的比較多,因此本身試着寫了寫遍歷,同時試了一下在SHELL腳本中的變量自增幾個寫法,在就新手學習的時候注意一下 [ 和 $ 之間要有空格,沒有空格運行會報錯,新手可能不太注意這一點,我開始就沒注意到~~~~

示例:

#!/bin/bash

my_arry=(a b "c","d" abc)
echo "-------FOR循環遍歷輸出數組--------"
for i in ${my_arry[@]};
do
  echo $i
done

echo "-------::::WHILE循環輸出 使用 let i++ 自增:::::---------"
j=0
while [ $j -lt ${#my_arry[@]} ]
do
  echo ${my_arry[$j]}
  let j++
done

echo "--------:::WHILE循環輸出 使用 let  "n++ "自增: 多了雙引號,其實不用也能夠:::---------"
n=0
while [ $n -lt ${#my_arry[@]} ]
do
  echo ${my_arry[$n]}
  let "n++"
done

echo "---------::::WHILE循環輸出 使用 let m+=1 自增,這種寫法其餘編程中也經常使用::::----------"
m=0
while [ $m -lt ${#my_arry[@]} ]
do
  echo ${my_arry[$m]}
  let m+=1
done

echo "-------::WHILE循環輸出 使用 a=$[$a+1] 自增,我的以爲這種寫法比較麻煩::::----------"
a=0
while [ $a -lt ${#my_arry[@]} ]
do
 echo ${my_arry[$a]}
 a=$[$a+1]
done
相關文章
相關標籤/搜索