shell脚本中 数组的基本用法

在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 中的数组的.


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

来看一下 结果


在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  

  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值