Linux shell 編程(五):數組

數組

數組是有序的元素序列 。若將有限個類型相同的變量的集合命名,那麼這個名稱爲數組名。組成數組的各個變量稱爲數組的分量,也稱爲數組的元素,有時也稱爲下標變量。用於區分數組的各個元素的數字編號稱爲下標。數組是在程序設計中,爲了處理方便, 把具有相同類型的若干元素按無序的形式組織起來的一種形式。這些無序排列的同類數據元素的集合稱爲數組。

在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:~# 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章