shell指令碼中 陣列的基本用法
阿新 • • 發佈:2019-01-05
在shell指令碼中,陣列 也是一種常用的資料結構,這篇文章簡單 說一下 陣列的基本用法.
1 陣列的宣告
這樣就可以 宣告 arr ,和 iplist 的陣列
#陣列的宣告
# 用 declare -a variable 語句來清楚地指定一個數組
# 宣告一個數組
declare -a arr
declare -a iplist
2 陣列的 定義,賦值
這裡賦值請注意,如果 arr[0] 已經有值 會被覆蓋。此時 arr0 = zero# 陣列的定義 arr=(1 2 3 4 5 6 7 8 9) iplist=( 10.130.2.20 10.130.2.21 10.130.2.22 10.130.2.23 10.130.2.24 10.130.2.25 10.130.2.26 10.130.2.27 10.130.2.28 10.130.2.29 ) #陣列的 賦值 arr[0]=zero arr[1]=one
3 求陣列的長度
# 求陣列 長度 2中方式
length=${#arr[@]}
length1=${#arr[*]}
echo "length:$length"
echo "length1:$length1"
4 遍歷陣列
# 遍歷陣列 有兩種方式
# 1)遍歷陣列
for(( i=0;i<${#arr[@]};i++))
do
echo ${arr[i]}
done
# 2)遍歷陣列
echo ${arr[@]}
2017年 09月 19日 星期二 09:29:33 補充:
4-1 資料的遍歷 好像 還有其他的兩種方式
#!/bin/sh
iplist=(
10.130.2.20
10.130.2.21
10.130.2.23
10.130.2.24
10.130.2.25
10.130.2.26
10.130.2.27
10.130.2.28
10.130.2.29
10.130.2.30
)
for ip in ${iplist[*]}
do
echo $ip
done
echo "----------------------------"
for ip in ${iplist[@]}
do
echo $ip
done
這樣 也是可以 遍歷shell 中的陣列的.5 單獨 取某個值,陣列下標從 0 開始
這裡取下標為 1 3 的值
echo ${arr[1]}
echo ${arr[3]}
6 1) 刪除 陣列的某個值,這裡要注意一點, shell 中的陣列特點。
### 測試刪除 陣列###
#!/bin/bash
curDir=$(cd "$(dirname "${BASH_SOURCE[0]}")"; pwd); #當前絕對路徑
function printarr()
{
for((i=0;i<${#arr[@]};i++))
do
echo "index:$i , ${arr[i]}"
done
}
# 陣列的定義
#arr=(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 )
arr=(0 1 2 3 4 5 6 7 8 9 10 11 12 )
# 求陣列 長度
length=${#arr[@]}
printarr
echo "length before : ${#arr[@]}"
# 刪除 陣列 元素
unset arr[0]
echo "arr0 : ${arr[0]}"
echo "arr2 : ${arr[2]}"
unset arr[3]
echo "arr3 : ${arr[3]}"
echo "length after: ${#arr[@]}"
printarr
來看一下 結果
arr[0]=0
arr[3]=3
echo "-------------------"
printarr
這裡 重新 又被賦值成功了。
2)刪除整個陣列
# 刪除整個陣列
unset arr
7 1)陣列的分片
${arr[@]:number1:number2}
這裡 number1 從下標number1 開始取值, number2 往後取幾個元素,即取到的新的陣列的長度
arr=(1 2 3 4 5 6 7 8 9 10 11 12 13)
echo "{arr[@]:0:3} --- ${arr[@]:0:3}"
# 1 2 3
echo "{arr[@]:3:5} --- ${arr[@]:3:5}"
# 4 5 6 7 8
echo "{arr[@]:5:4} --- ${arr[@]:5:4}"
# 6 7 8 9
2) 陣列賦值,分片之後賦值,將分片後的陣列,重新賦值給新的陣列
newarr=(${arr[@]:0:3})
for(( i=0;i<${#newarr[@]};i++))
do
echo ${newarr[i]}
done
總結: 本文介紹了陣列的最基本的用法,也是shell指令碼中陣列經常用到的。
分享快樂,留住感動。你的點贊,就是對我最大的支援。 -- biaoge 2017年 09月 17日 星期日 22:07:32