shell中的陣列

2021-12-29 22:57:23 字數 2132 閱讀 9439

shell作為一門語言那肯定是不能缺少陣列了,下面記錄了shell中陣列的一些相關內容。

bash 提供了一維陣列變數。任何變數都可以作為乙個陣列;內建命令 declare 可以顯式地定義陣列。陣列的大小沒有上限,也沒有限制在連續對成員引用和賦值時有什麼要求。陣列以整數為下標,從 0 開始。

下面的示例總結了如何定義乙個陣列和如何來初始化陣列:

declare -a array #顯示宣告了陣列array

delcare -a array[10] #陣列大小沒有上限,所以定義時指定的大小會被忽略

array[key]=value #array[0]=one,array[1]=two

array=(value1 value2...) #value的形式都是[subscript]=string,下標和等號可以省略,示例如下。

array=(value1 value2 value3) #array[0]=value1,array[1]=value2,array[2]=value3

array=([0]=value1 [2]=value3 [3]=value[4])從上面來看陣列的定義也是非常靈活多變的,能夠滿足我們大部分的需求,跟其其它語言最大的區別就是shell中的陣列大小沒有上限,也可以理解為陣列是動態的。

陣列的任何元素都可以用$來引用,花括號是必須的,以避免和路徑擴充套件衝突。

如果 subscript 是@或是*,它擴充套件為array的所有成員。這兩種下標只有在雙引號中才不同。在雙引號中,$擴充套件為乙個詞,由所有陣列成員的值組成,用特殊變數ifs的第乙個字元分隔陣列成員;$將array的每個成員擴充套件為乙個詞。 如果陣列沒有成員,$ 擴充套件為空串。

#!/bin/bash

arr=(one two)

for i in $

do echo $

done上面的示例**的輸出結果如下:

lxg@lxg-x240:~/station/shell$ sh ./array.sh

one two

#!/bin/bash

arr=(one two)

for i in $

do echo $

done上面的示例**的輸出結果如下:

lxg@lxg-x240:~/station/shell$ sh ./array.sh

onetwo

用unset來進行陣列的刪除,示例如下:

unset array[2] #刪除第三個成員

unset array #刪除整個陣列$

$$ #錯誤的。這個獲取的是陣列第乙個成員的長度。獲取陣列的「子串「用$來表示,如果沒有:m那麼就獲取從下標n開始到最後乙個元素的「字串「,示例如下:

#!/bin/bash

echo $

echo $

echo $輸出如下:

three four

two three four

oner two three four

shell中還可以宣告乙個關聯陣列,普通陣列只能使用整數作為陣列的索引,而關聯陣列則使用字串作為陣列的索引。這個關聯陣列是不是有點其它語言中的字典的意思呢,o(∩∩)o…哈哈

#!/bin/bash

declare -a ass_arr

ass_arr[apple]=12

ass_arr[orange]=19

for t in $

do echo $

done

echo ass_arr[orange]=$上面的示例輸出如下:

1912 ass_arr[「orange」]=19

從上面的輸出來看關聯陣列輸出的順序跟普通陣列有一些不同,關聯陣列是從最後乙個成員開始輸出。

關聯陣列使用字串作為索引,有時候我們需要獲取陣列的所有索引,可以用如下的方式來獲取:

#!/bin/bash

declare -a ass_arr

ass_arr[apple]=12

ass_arr[orange]=19

echo $ #or $輸出如下:

apple orange

Shell中的陣列

一 陣列和字串 array 3 a b c echo array 1 輸出b,str a b c array str echo array 1 同樣輸出b,要注意 array str 中的右值的括號不能缺 上面這個就是我們常說的把字串放到乙個陣列中,也可以理解為動態陣列,比c和c 簡單多了 計算字串...

Shell中的陣列

二維陣列 構造成這樣 a 1 2 3 4 5 6 7 8 9 然後操作的時候利用第i行j列的元素等於i len j,len是陣列的第二維度大小,這樣做有時候更簡單,但是就必須得控制一下邊界了,比如3 3的陣列,你可能初始化只給出8個元素。一 陣列和字串 array 3 a b c echo arra...

Shell中的陣列

陣列元素的格式 array index index從0開始。定義陣列 在bash中定義陣列有兩種方法 1 直接在定義時為所有的陣列元素賦值 root localhost shell array 123 45 2 對陣列中每個陣列元素進行賦值 root localhost shell array 0 ...