Shell中的陣列

2022-05-04 21:09:06 字數 2181 閱讀 6095

【陣列元素的格式】

array[index]

index從0開始。

【定義陣列】

在bash中定義陣列有兩種方法:

(1)直接在定義時為所有的陣列元素賦值:

[root@localhost shell]# array=(123

45)

(2)對陣列中每個陣列元素進行賦值:

[root@localhost shell]# array[0]=1; array[4]=5; array[3]=4

使用這種方法對陣列定義時,可以不按照陣列下標的先後順序進行操作,也不必對陣列中的每乙個元素賦值。

(3)如果需要修改陣列中某個元素的值,可以使用陣列定義中的第二種方法:

[root@localhost shell]# array[1]=2

[root@localhost shell]# array[

2]=3

...

(1)如果需要引用陣列中的某個元素,可以使用陣列名加索引的方式:

[root@localhost shell]# echo $

3

與其他語言中引用陣列元素不同,在bash中需要將陣列元素放入大括號「{}」中,其目的是為了避免bash將陣列名誤解為乙個變數。

(2)如果不指定陣列索引,將會顯示陣列中的第1個元素的值:

[root@localhost shell]# echo $array

1

(3)有時可能希望看到陣列中所有元素的值,這樣做的目的可能是為了檢查其值是否有錯誤:

[root@localhost shell]# echo $12

345

上面示例中,「*」表示所有下標,也可以使用「@」。

(4)當陣列中的元素非常多時,可能檢視起來非常不方便,這是可以指定檢視的元素範圍,例如:

#檢視陣列中下標大於等於2的所有元素的值

[root@localhost shell]# echo $34

5

(5)有時需要獲得陣列的長度,即陣列中一共有多少個元素。這是可以使用以下形式:

[root@localhost shell]# echo $

5

(5)示例指令碼,按陣列元素的值從小到大排序:

[root@localhost shell]# cat example3.sh 

#!/bin/bash

#this

isa example script.

#2013/12/16

array=(123

45799

379622

895111

451000

)lenth=$

i=0while [ "

$i" -lt "

$lenth"]

doj=`expr $i + 1

`

while [ "

$j" -lt "

$lenth"]

doif [ "

$" -lt "$"

] then

temp=$

array[j]=$

array[i]=$temp

fij=`expr $j + 1

` done

i=`expr $i + 1

`done

echo $

unset array i j temp lenth

[root@localhost shell]# ./example3.sh 

4599

111123

379457

622895

1000

不再使用陣列時,應該清楚陣列,以**這些陣列占用的系統資源。與變數相同,清除陣列也使用unset命令。

(1)清除陣列array的第1個元素:

[root@localhost shell]# unset array[0]

(2)清除整個陣列:

[root@localhost shell]# unset array

[root@localhost shell]# echo $

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中的陣列

shell作為一門語言那肯定是不能缺少陣列了,下面記錄了shell中陣列的一些相關內容。bash 提供了一維陣列變數。任何變數都可以作為乙個陣列 內建命令 declare 可以顯式地定義陣列。陣列的大小沒有上限,也沒有限制在連續對成員引用和賦值時有什麼要求。陣列以整數為下標,從 0 開始。下面的示例...