Shell脚本数组

目录

1. 将/etc/shadow文件的每一行作为元数赋值给数组

2. 使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量

3. 使用关联数组按扩展名统计指定目录中文件的数量


1. 将/etc/shadow文件的每一行作为元数赋值给数组


###############################################
# Author:        lee
# Version:       
# Create_Time:   2023/04/02
# Mail:          [email protected]
# Info:  
# 
################################################

#!/bin/bash

j=0
for i in `cat /etc/shadow`
do
  array[$j]=$i
    let j++ 
done
read -p "input you want line:" line
echo ${array[$line]}

-----------------------------------结果如下----------------------------------------------

[root@master node1]# sh lx1.sh 
input you want line:1
bin:*:18353:0:99999:7:::

2. 使用关联数组统计文件/etc/passwd中用户使用的不同类型shell的数量

###############################################
# Author:        lee
# Version:       
# Create_Time:   2023/04/02
# Mail:          [email protected]
# Info:  
# 
################################################

#!/bin/bash

declare -A array
for i in `cut -d : -f7 /etc/passwd`
do
  let array[$i]=array[$i]+1
done
for sub in ${!array[@]}
do
  echo $sub:${array[$sub]}
done

--------------------------------------结果如下-------------------------------------------


[root@master node1]# sh lx2.sh 
/sbin/nologin:15
/bin/sync:1
/bin/bash:3
/sbin/shutdown:1
/sbin/halt:1

3. 使用关联数组按扩展名统计指定目录中文件的数量

###############################################
# Author:        lee
# Version:       
# Create_Time:   2023/04/02
# Mail:          [email protected]
# Info:  
# 
################################################

#!/bin/bash

declare -A array

for i in `ls | awk -F. '{print $NF}'`
do
  let array[$i]=array[$i]+1
done
for sub in ${!array[@]}
do
  echo "$sub:${array[$sub]}"
done

-------------------------------结果如下-------------------------------------------------

[root@master node1]# ls
clsn    lx2.sh  mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz  ok_failed.sh  test3.sh
lx1.sh  lx3.sh  nginx-1.10.0.tar.gz                         test2.sh      zy1.sh

[root@master node1]# sh lx3.sh 
gz:2
sh:7
clsn:1

你可能感兴趣的:(运维高级,linux,服务器,运维,shell)