标签:基础 简介 local 需要 应用 i++ 代码 type uniq
数组 是 shell 中的一种基础数据类型,用来存储大量数据。但是实际使用环境中,其实用到的并不像其他变成语言中那么多,主要是因为shell主要是为了完成一些简单的任务,并不需要太复杂的代码。但是,作为一种编程语言,了解其基础数据类型是很有必要的。
直接在数组中添加元素,不需要申明。只能通过数字进行索引取值。
1)定义
[root@localhost ~]# a=(1 2 3 4 5 6 7 )
2) 取值
[root@localhost ~]# echo ${a[3]} #取出索引为3对应位置的值
4
[root@localhost ~]# echo ${a[*]} #取出所有元素
1 2 3 4 5 6 7
[root@localhost ~]# echo ${a[@]} #取出所有元素
1 2 3 4 5 6 7
[root@localhost ~]# echo ${!a[@]} #取出所有索引
0 1 2 3 4 5 6
3)建立数组的另一种方式,通过赋值。
[root@localhost ~]# b[0]=10
[root@localhost ~]# b[1]=4
[root@localhost ~]# b[3]=6
[root@localhost ~]# echo ${b[@]}
10 4 6
关联数组需要使用关键字先声明,然后在创建
1)定义
[root@localhost ~]# declare -A bb
[root@localhost ~]# bb=([index1]=python [index2]=shell)
2) 取值
[root@localhost ~]# echo ${bb[index1]}
python
[root@localhost ~]# echo ${bb[index2]}
shell
[root@localhost ~]# echo ${bb[*]}
python shell
[root@localhost ~]# echo ${bb[@]}
python shell
[root@localhost ~]# echo ${!bb[@]}
index1 index2
3) 通过赋值创建
[root@localhost ~]# declare -A c
[root@localhost ~]# c[name]=huahua
[root@localhost ~]# c[age]=18
[root@localhost ~]# echo ${c[name]}
huahua
[root@localhost ~]# echo ${c[age]}
18
[root@localhost ~]# b[0]=10
[root@localhost ~]# b[1]=4
[root@localhost ~]# b[3]=6
[root@localhost ~]# echo ${b[@]:1:2}
4 6
[root@localhost ~]# echo ${b[@]:1:4}
4 6
[root@localhost ~]# echo ${b[@]:0:3}
10 4 6
[root@localhost ~]# echo ${b[@]:0:1}
10
不支持使用关联索引进行切片,而只能使用数字索引进行切片
[root@localhost ~]# declare -A info
[root@localhost ~]# info[age]=18
[root@localhost ~]# info[name]=love2
[root@localhost ~]# info[skill]=python
[root@localhost ~]# echo ${info[@]}
love2 18 python
[root@localhost ~]# echo ${info[@]:0:1}
love2
[root@localhost ~]# echo ${info[@]:0:2}
love2 18
[root@localhost ~]# echo ${info[@]:0:3}
love2 18 python
#!/bin/bash
i=0
while read line
do
hostarray[i++]=$line
done </etc/hosts
for j in ${!hostarray[*]}
do
echo ${hostarray[$j]}
done
4.2.1) 生成统计文件
[root@centos ~]# cat > ha.txt <<-EOF
jh m
nj f
ki m
lk m
uh f
EOF
4.2.2)使用命令统计
[root@localhost ~]# awk '{print $2}' ha.txt|sort|uniq -c|sort -rn
3 m
2 f
4.2.3)使用数组进行统计
#!/bin/bash
declare -A array_count
while read line
do
type=$(echo $line|awk '{print $2}')
let array_count[$type]++
done<ha.txt
for i in ${!array_count[*]}
do
echo "$i 次数为:${array_count[$i]}"
done
#执行结果
[root@localhost ~]# bash a2.sh
f 次数为:2
m 次数为:3
4.3.1)、使用命令统计
[root@localhost ~]# awk -F ':' '{print $NF}' /etc/passwd|sort|uniq -c|sort -n
1 /bin/sync
1 /sbin/halt
1 /sbin/shutdown
6 /bin/bash
22 /sbin/nologin
4.3.2)、使用数组进行统计
#!/bin/bash
declare -A user_array
while read line
do
type=`echo $line|awk -F ':' '{print $NF}' `
let user_array[$type]++
done</etc/passwd
for i in ${!user_array[*]}
do
echo " 用户类型为:$i,该类型用户个数为:${user_array[$i]}"
done
#执行结果
[root@localhost ~]# bash a3.sh
用户类型为:/sbin/nologin,该类型用户个数为:22
用户类型为:/bin/sync,该类型用户个数为:1
用户类型为:/bin/bash,该类型用户个数为:6
用户类型为:/sbin/shutdown,该类型用户个数为:1
用户类型为:/sbin/halt,该类型用户个数为:1
标签:基础 简介 local 需要 应用 i++ 代码 type uniq
原文地址:https://www.cnblogs.com/hjnzs/p/12298407.html