shell数组

1、数组分类

普通数组:只能使用整数 作为数组索引 
关联数组:可以使用字符串 作为数组索引

2、普通数组

1.方式一, 对每个索引赋值
#数组名[索引]=变量值
# array1[0]=pear
# array1[1]=apple

2.方式二, 一次赋多个值
#数组名=(多个变量值)
# array1=(tom jack alice)
# array2=(`cat /etc/passwd`)
# array3=(tom jack alice "bash shell")
# array4=(1 2 3 "linux shell" [20]=puppet)

3.查看数组赋值
# declare -a
# declare -A

4.访问数组中的元数
# echo ${array1[0]}        访问数组第一个索引的值
# echo ${array1[@]}        访问数组中所有索引的值,== ${array1[*]}
# echo ${!array1[*]}       访问数组所有的索引
# echo ${#array1[@]}       统计数组元数的个数

3、关联数组 

1.定义关联数组
# declare -A tt_array_1
# declare -A tt_array_2

2.方式一, 针对每个索引进行赋值
#数组名[索引]=变量值 
# tt_array1[index1]=pear
# tt_array1[index2]=apple

3.方式三, 一次赋多个值
# tt_array2=([index1]=tom [index2]='bash shell')

4.查看关联数组
# declare -A

5.访问数据元数
# echo ${tt_array2[index2]}      访问数组第二个索引的值
# echo ${tt_array2[@]}           访问数组所有索引的值 == ${array1[*]}
# echo ${!tt_array2[@]}          访问数组所有的索引

4、遍历数组

遍历数组:推荐通过数组的索引,不推荐通过数组索引的个数。

1.数组赋值与遍历示例
# vim read.sh
declare -A x                    定义关联数组
while  read y                   循环读取文件每行,y=每行内容
do
   let x[$y]++                  x='([a]="1" [b]="2" [c]="3" )' y=[a b c] 值=次数
   declare -A
done <a.txt        

for i in ${!x[*]}                循环数组的下标
do
 echo "$i  ${x[$i]}"             i=下标  x[$i]=下标的值
done
  


2.统计日志访问量
# vim tongji.sh       
declare -A x
file=$1                

while  read y                      读取每行
do
ip=`echo $y |awk '{print $1}'`     取每行第一列
   let x[$ip]++                    x='([192.168.1.1]="3" [192.168.2.1]]="6" [192.168.3.1]="9" )'
done<$file

for i in ${!x[*]}                  循环数组的下标
do
 echo "$i  ${x[$i]}"               i=下标  x[$i]=下标的值
done

3.统计ip连接数
# vim connect.sh 
declare -A x             
y=`ss -an|awk '{print $1}'`        监听状态
for i in $y                        读取每行
do
        let x[$i]++                x=([LISTEN]=3 [ESTABLISHED]=6 [TIME_WAIT]=9)
done

for z in ${!x[@]}                  循环数组的下标
do
        echo "$z ${x[$z]}"         z=下标  x[$z]=下标的值
done

5、awk 数组

# ss -an | awk '/9000/{x[$1]++}END{for(i in x)print i,x[i]}'
                匹配   行数组       数组下标       下标 值

                                   

 

 

               

 

 

posted on 2020-07-31 16:36  五光十色  阅读(194)  评论(0编辑  收藏  举报

导航