Linux shell 中的陣列和關聯陣列
阿新 • • 發佈:2019-01-28
寫在前面的話
我用開始廢柴了,這個又是寫給我自己看的了。普通陣列
1.陣列的定義
在Linux shell中定義一個普通的陣列很簡單,首先我們先給陣列命名(當然要符合所有的命名規則咯)。定義陣列的一般格式就是: array_name=(element1 element2 element3 ...) 陣列名=(元素1 元素2 元素3 。。。) 陣列的定義用的是圓括號,和python中的tuple元組定義是相似的,但是元祖中的值一旦被定義就不能被改變,但是linux shell 中的陣列值是可以被改變的。還有就是預先賦值的變數之間使用的是空格隔開的。 同樣我們需要注意的是在linux shell 中所有的賦值語句也就是等號前後是不能有空格的,因為空格會被當做是命令來處理。2.陣列的引用
定義了陣列我們當然是要用的咯,那麼我們要引用一個數組中的某個元素時(元素的索引同樣和大部分的計算機語言一樣是從0開始的)用的語句是${array_name[index]} ${陣列名[陣列的索引下標]} 如下圖所示: 我們定義了一個數組然後要打印出某個特定的元素:當然如果我們要引用的是定義的陣列的所有元素,我們要用的方法如下所示:
如果我們要獲取出陣列的長度,我們可以用下面的方法: ${#array_name[*]} 或者是 ¥{#array_name[@]} 下圖是打印出陣列的長度:
關聯陣列
從Bash 4.0 (Bash 好容易調戲,那個風中女王的那個男主的哥哥) 引入了關聯陣列,也就是索引可以是文字,是不是感覺有點像字典那種資料結構(字典是啥,額,大哥你是學計算機的麼) 首先我們必須要申明一下這個陣列是關聯陣列,然後再使用 declare -A array_name 關聯,英文是association 所以簡寫為 —A 我是這麼記憶的 然後我們可以給這個陣列賦值,同樣是兩種方法 第一種方法 array_name=([index1]=val1 [index2]=val2) 第二種方法 array_name[index1]=val1 array_name[index2]=val2 舉一個例子運用一下咯:如果我們需要知道關聯陣列的索引以及這個陣列中元素的個數我們可以用下面的這個方法: