Linux shell 編程(五):數組
阿新 • • 發佈:2018-04-21
array shell loop 數組
數組是有序的元素序列 。若將有限個類型相同的變量的集合命名,那麽這個名稱為數組名。組成數組的各個變量稱為數組的分量,也稱為數組的元素,有時也稱為下標變量。用於區分數組的各個元素的數字編號稱為下標。數組是在程序設計中,為了處理方便, 把具有相同類型的若幹元素按無序的形式組織起來的一種形式。這些無序排列的同類數據元素的集合稱為數組。
在shell中數組有兩種類型:
- 索引數組(indexed arrays)
- 關聯數組(associative arrays)
索引數組(indexed arrays)
索引數組使用數字作為下標,下標默認從0開始。
- 聲明數組:
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# # 直接聲明 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# array=(10 20 30 40 50 60 60 80 90) # 用空格分隔 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# # 使用declare root@iZuf6ilzd4iqvuj4dvuiwtZ:~# declare -a arrays # 聲明一個索引數組
關聯數組(associative arrays)
關聯數組是一種具有特殊索引方式的數組。不僅可以通過整數來索引它,還可以使用字符串或者其他類型的值(除了NULL)來索引它。
- 數組聲明
# 關聯數組聲明必須使用declare -A 方式,否則shell會將其認為是索引數組 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# declare -A info # 定義一個管理數組 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# info[‘name‘]=‘raojinlin‘ # 插入name鍵,賦值 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# info[‘age‘]=21 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# info[‘obj‘]=‘ops‘ root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${info[@]} # 獲取數組 raojinlin 21 ops root@iZuf6ilzd4iqvuj4dvuiwtZ:~#
數組操作
-
訪問數組
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${array[0]} # array[index] 10 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# # 使用通配符* 或 @ 可以訪問數組中的所有元素 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${array[@]} 10 20 30 40 50 60 60 80 90 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${array[*]} 10 20 30 40 50 60 60 80 90 root@iZuf6ilzd4iqvuj4dvuiwtZ:~# array[0]=10 # 將下標為0的元素賦值為10
- 數組長度
# 語法:${#數組[@|*]}
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${#array[*]}
9
root@iZuf6ilzd4iqvuj4dvuiwtZ:~#
- 獲取數組下標(鍵)
# 語法:${!數組[@|*]}
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# echo ${!info[@]}
name age obj
root@iZuf6ilzd4iqvuj4dvuiwtZ:~#
- 數組遍歷
使用for循環可以遍歷數組
root@iZuf6ilzd4iqvuj4dvuiwtZ:~# for var in ${info[@]};do echo $var;done
raojinlin
21
ops
root@iZuf6ilzd4iqvuj4dvuiwtZ:~#
Linux shell 編程(五):數組