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 ...