在shell脚本中,数组 也是一种常用的数据结构,这篇文章简单 说一下 数组的基本用法.
1 数组的声明
这样就可以 声明 arr ,和 iplist 的数组
#数组的声明
# 用 declare -a variable 语句来清楚地指定一个数组
# 声明一个数组
declare -a arr
declare -a iplist
2 数组的 定义,赋值
# 数组的定义
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
这里赋值请注意,如果 arr[0] 已经有值 会被覆盖。此时 arr0 = zero 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 中的数组的. 这里取下标为 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
来看一下 结果
在shell 脚本 发现 删除 数组后, 对应"位置" 会被保留,而是 向数据结构里面 那样, 里面依次前移,来填补空缺位置,在shell 删除 数组, 把值 删除了, 但是对应的“位置”会留着。
之后 还可以在位置让填充 其他的值
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