Shell指令碼之陣列

2021-10-08 12:43:31 字數 3290 閱讀 2749

陣列是存放相同型別資料的集合,陣列中可以存放多個值,經常配合迴圈語句進行使用。

例如:

有乙個陣列:num=(15 16 17 18 19)

陣列名稱:num

陣列元素(第1個):11

陣列長度:5

陣列下標:元素18所對應的下標為3

shell 陣列用括號來表示,元素用"空格"符號分割開,語法格式如下:

方法一:

陣列名=(value0 value1 value2 ...)
例:

[root@localhost ~]# num=(10 20 30 40 50 60)

[root@localhost ~]# echo $num

10[root@localhost ~]# echo $

10[root@localhost ~]# echo $

10 20 30 40 50 60

[root@localhost ~]# echo $

40

方法二:

陣列名=([0]=value [1]=value2 [2]=value ...)
例:

[root@localhost ~]# num=([0]=15 [1]=16 [2]=17 [3]=18)

[root@localhost ~]# echo $

15 16 17 18

方法三:

列表名:"value0 value1 value2"

陣列名=($列表名)

例:

[root@localhost ~]# list="15 16 17 18 19"

[root@localhost ~]# num=($list)

[root@localhost ~]# echo $

15 16 17 18 19

方法四:

陣列名[0]="value"

陣列名[1]="value"

陣列名[2]="value"

陣列包括的資料型別:

例1:使用陣列輸出1-100

#!/bin/bash

#for ((i=0;i<=99;i++));do ## 注意:這裡的i代表的含義是陣列下標,下標從0開始!

num[$i]=$[$i+1]

done

echo $

例2:需求:建立任意數字及長度的陣列,可以根據需求加入元素

#!/bin/bash

#i=0

while true

do read -p "是否輸入元素(yes/no):" a

if [ $a = no ];then

break

firead -p "請輸入第$[$i+1]個元素:" b

num[$i]=$b

let i++

done

echo $

$
$
例1:遍歷陣列,找出陣列中小於60的值並直接賦予60

#!/bin/bash

score=(88 90 56 24 70 89)

for ((i=0;i<$;i++))

do if [ $ -lt 60 ];then

new[$i]=60

else

new[$i]=$

fidone

echo $

例2:輸出陣列中最大值

#!/bin/bash

score=(72 88 42 55 90)

temp=0

for ((i=0;i<$;i++));do

if [ $ -gt $temp ];then

temp=$

fidone

echo $temp

例3:將乙個陣列中的元素由小到大進行排序(又稱:氣泡排序)

#!/bin/bash

#score=(72 63 88 91 45)

for ((i=1;i<$;i++));do

for ((j=0;j<$-i;j++));do

if [ $ -gt $ ];then

tmp=$

score[`expr $j + 1`]=$

score[$j]=$tmp

fidone

done

echo $

陣列切片

$
例:

[root@localhost ~]# num=(15 16 17 18 19)

[root@localhost ~]# echo $

16 17 18

陣列的替換

$
例:

[root@localhost ~]# num=(15 16 17 18 19)

[root@localhost ~]# echo $

15 16 20 18 19

陣列刪除

unset
例:刪除陣列中小於60的元素

#!/bin/bash

#i=0

score=(45 65 70 84 91 33)

for k in $ ;do

if [ $k -lt 60 ];then

unset score[$i]

filet i++

done

echo $

命令語法

sh [-nvx] 指令碼名

可選項:-n 不執行,將結果輸出;-vx 執行並將結果輸出

shell指令碼之陣列

陣列中可以存放多個值。bash shell只支援一維陣列,初始化時不需要定義陣列大小。與大部分程式語言類似,陣列元素的下標由0開始。shell陣列用括號來表示,元素用 符號來分割開,語法格式如下 array name n1 n2 n3 ns 例項 array name a b c d 我們也可以使用...

shell指令碼高階之陣列基礎

陣列和變數的區別 變數在記憶體中占用的空間是離散的,陣列在內粗中開闢一段連續的大記憶體空間,隨後陣列中的每個元素都放入陣列記憶體中。陣列元素使用index標識。bash裡有兩種陣列普通陣列和關聯陣列。普通陣列只能使用整數類形數值作為陣列索引,關聯陣列可以使用字串作為索引。關聯陣列的另外三種稱呼 字典...

shell指令碼快速入門之 陣列

四 陣列的操作 五 陣列指令碼例項 什麼是陣列?陣列是存放相同型別資料的集合,在記憶體中開闢了連續的空間,通常配合迴圈使用 普通陣列 不需要宣告直接定義,下標索引只能是整數 關聯陣列 需要用declare a宣告否則系統不識別,索引可以是字串 如 arr 11 22 33 44 陣列名稱 arr 陣...