陣列是存放相同型別資料的集合,陣列中可以存放多個值,經常配合迴圈語句進行使用。
例如:
有乙個陣列: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 陣...