Cat-God-007

导航

Shell脚本编程学习笔记(七)---- 数组

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

数组

array

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。 与大部分编程语言类似,数组元素的下标由 0 开始。

1.定义关联数组,申明是关联数据(临时)
declare -A 数组名
2-1.给关联数组进行赋值
数组名[索引]=变量值

备注:在使用形如str[0]=1定义数组是,数组的下标值可以不是连续的正整数,元素的顺序按照下标的升序排列,数组的长度由实际包含的元素个数决定,不受下标值的影响。echo ${str2[0]};echo ${str2[5]的值为a decho ${str[2]}的值为空。

2-2.特殊定义
  1. 在for循环中,也可以直接声明并使用数组 for num in 1 2 3 4 5 do echo "num is: ${num}" done
  2. 使用自定义的分隔符分割 str="a,b,c" OLD_IFS="$IFS" IFS="," arr=($str) IFS="$OLD_IFS"`` 此时arr数组的值为a b c或者是:str="m,n";IFS=",";arr=($str),也能按照","对字符串进行分割。与上一条的区别是,上一条更改了IFS的默认值,之后又改了回去,但是第3条没有改回去。IFS`的默认值为空格、teb或换行.
  3. 其他
${数组名[*]}   数组的所有值
${!数组名[*]}  数组的所有索引
  1. 给关联数组一次赋多个值
数组名=([索引]=变量值  [索引]=变量值  [索引]=变量值 )
3.查看数组
declare -A
4.访问数据元数
${数组名[索引序号]}

例如

//访问数组中的第二个元素
echo ${tt_array2[index2]}
//访问数组中的所有元素
echo ${tt_array2[@]}
//访问数组中所有元素的索引
echo ${!tt_array2[@]}
//统计数组中的长度
echo "数组元素个数为: ${#tt_array2[*]}"
5.遍历数组

通过数组的索引进行遍历

注:将统计的对象作为数组的索引,仅针对关联数据

例如

#!/usr/bin/bash
declare -A array_passwd
#1.对数组进行赋值(需要提前定义,赋值数组)
while read line
do
    type$(echo $line|awk -F ':'{print $NF}')
    let array_passwd[$type]++    
done</etc/passwd
#2.对数组进行遍历
for i in ${!array_passwd[@]}
do
     echo "索引是:$i,索引的值是:${array_passwd[$i]}"
done

并发

{
命令
}&

以上只是数组的一些简单的操作,具体还有更复杂的操作,可以简化工作中重复的部分。

28.jpg

感谢大家,点赞,收藏,关注,评论!

posted on 2022-06-04 07:26  CatGod007  阅读(0)  评论(0)    收藏  举报  来源