概述
array作爲一種數據結構,在所有高級語言編程中都是有直接提供和實現的,shell 肯定也是會使用到的。
數組的聲明
怎樣聲明一個數組變量?假設數組的變量名爲array。
- 直接賦值(根據數組的下標進行賦值)
array[0]="a"
array[1]="b"
array[3]="c"
- 結合關鍵字declare 進行聲明
declare -a array
- 小括號空格法
array=("a" "b" "c")
- 引號空格法
array="a b c d e"
- 混合法
array=([0]="a" [1]="b" [2]="c")
數組的長度
在shell中如何獲取數組的長度?假設數組的變量名爲array。
#獲取整個數組的長度
echo ${#array[@]}
echo ${#array[*]}
------------------------------------------------------------------------------
# 獲取數組單個元素的長度(i表示數組元素的下標)
echo ${#array[i]}
數組的值
在shell中如何獲取數組的值?假設數組的變量名爲array。
#獲取數組某個下標(元素)的值:
echo ${array[i]}
------------------------------------------------------------------------------
#獲取整個數組(即所有元素)的值:
echo ${array[@]}
數組的遍歷
在shell中如何遍歷一個數組?假設數組的變量名爲array。
- 標準for循環
for (i=0;i<=${#array[@];i++})
do
echo ${array[i]}
done
- for…in…循環
for value in ${array[@]
do
echo ${value}
done
數組的刪除
#刪除數組中的某個元素;其中i表示數組元素的下標
unset array[i]
------------------------------------------------------------------------------
#刪除整個數組
unset array
數組的切片(數組的提取)
#定義一個數組array
array=("a" "b" "c" "d" "e" "f")
#獲取數組的長度
[ yuki@myhost ~ ] echo ${#array[@]}
6
[ yuki@myhost ~ ] echo ${#array[*]}
6
#獲取數組下標爲1的元素的值
[ yuki@myhost ~ ] echo ${array[1]}
b
#獲取數組的所有值
[ yuki@myhost ~ ] echo ${array[@]}
b
#從數組下標爲n開始切片到下標爲m的地方,包前n下標的值不包後m下標的值
# 語法:echo ${array[@]:n:m}
[ yuki@myhost ~ ] echo ${array[@]:0:3}
a b c
[ yuki@myhost ~ ] echo ${array[@]:0:4}
a b c d
#從數組下標爲m開始切片到數組末尾,包括m下標的值
# 語法:echo ${array[@]:m}
[ yuki@myhost ~ ] echo ${array[@]:1}
b c d e f
[ yuki@myhost ~ ] echo ${array[@]:5}
f