关联数组——统计文件/etc/passwd中用户使用的不同类型shell的数量
一、脚本编写
#!/bin/bash #**************************************************** #Date: 2020-06-25 #Author: Damon Ye #FileName: countshell.sh #Description:The test script #**************************************************** declare -A ArrayForShell while read EachLine done后面接<将文件重定向给while;while后再接read将文件流赋值给变量 do ArrayIndex=`echo $EachLine | awk -F: '{print $7}'` awk会以逐行的形式处理本舰。 let ArrayForShell[$ArrayIndex]++ 当使用let时,变量前面不必加上$ done < /etc/passwd echo "######${!ArrayForShell[@]}######" 数组索引 echo "######${#ArrayForShell[@]}######" 数组元素的个数 echo "######${ArrayForShell[@]}######" 数组元素 for i in ${!ArrayForShell[@]} 数组索引的个数 == for循环执行的次数,这就是关联数组的遍历。 do echo "$i ::::: ${ArrayForShell[$i]}" done
二、执行结果
[root@localhost package]# bash countshell.sh ######/sbin/nologin /bin/sync /bin/bash /sbin/shutdown /sbin/halt###### ######5###### ######37 1 2 1 1###### /sbin/nologin ::::: 37 /bin/sync ::::: 1 /bin/bash ::::: 2 /sbin/shutdown ::::: 1 /sbin/halt ::::: 1