在linux中shell数组应用补充题型
1.将/etc/shadow文件中的每一行作为元数赋值给数组
方法一:
第一步:创建shell脚本文件如下
vim art4.sh
第二步:利用for循环以及sed命令进行打印
#将/etc/shadow文件的每一行作为元数赋值给数组
LINE=`wc -l < /etc/shadow`
for ((i=1;i<=$LINE;i++))
do
array[$i-1]=`sed -n "$i p" /etc/shadow`
done
echo ${array[0]}
echo ${array[3]}
第三步:给文件增加执行权限,并运行实现的效果:
增加执行权限:
chmod +x ary4.sh
运行文件
./ary4.sh
结果如下:
方法二:其具体操作一三步与方法一相同(两个代码意思差不多,都是把每一行送给一个数组元素)
第二步代码更改为:
while read line
do
array+=(`echo $line`)
done < /etc/shadow
echo ${array[0]}
echo ${array[3]}
2.使用关联数组统计/etc/passwd中用户使用的不同类型shell的数量
第一步:创建shell脚本文件如下
vim ary6.sh
第二步:声明关联数组,并写如下代码
#关联数组必须要声明
declare -A array
cut -d: -f7 /etc/passwd |sort | uniq -c | sort -nr > shell.txt
while read line
do
index=`echo $line | awk '{print $2}'`
array[$index]=`echo $line | awk '{print $1}'`
done < shell.txt
rm -rf shell.txt
echo ${array[@]}
echo ${!array[@]}
第三步:给文件增加执行权限
chmod +x ary6.sh
第四步:运行文件
./ary6.sh
第五步:运行结果如下: