linux数组索引,[shell编程] shell中的关联数组,获取数组索引

通过declare -A array 声明关联数组后,可以通过 key in ${!array[@]} 获取数组索引。

注意:如果数组为 索引数据 ,则无法实现

数据的应用,统计相同key的属相(如分析日志中的相同ip地址)

#!/bin/bash

declare -A array

for((i=1;i<=100;i++))

do

key=$(($RANDOM % 10))

array[$key]=$((${array[$key]}+1))

done

echo '###########'

for key in ${!array[@]}

do

echo $key '=' ${array[$key]}

done

# 结果

# ###########

# 0 = 6

# 1 = 9

# 2 = 6

# 3 = 15

# 4 = 9

# 5 = 9

# 6 = 11

# 7 = 12

# 8 = 12

# 9 = 11

关联数组与索引数组的引用区别

#!/bin/bash

# 关联数组

declare -A arr

arr=( [1]=one [2]=two [3]=three ['a']=ONE ['b']=TWO ['c']=THREE )

for k in "${!arr[@]}"

do

echo $k '--' ${arr[$k]}

done

# 结果

# a -- ONE

# b -- TWO

# c -- THREE

# 1 -- one

# 2 -- two

# 3 -- three

#!/bin/bash

# 关联数组

declare -a arr

arr=( [1]=one [2]=two [3]=three ['a']=ONE ['b']=TWO ['c']=THREE )

for k in "${!arr[@]}"

do

echo $k '--' ${arr[$k]}

done

# 结果

# 0 -- THREE

# 1 -- one

# 2 -- two

# 3 -- three

个人觉得,关联数组与索引数组的组别在于:

1. 索引数组为默认声明数组,在通过${!array[@]}取得所以的时候,总是会获得索引0,即使不存在。且不会获得值为“字符串”的索引。

2. 关联数组通过 -A 声明,个人感觉而言,更像python中的字典。

参考:http://www.cnblogs.com/hopeworld/archive/2011/04/12/2013425.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值