八、shell编程-数组

1.数组简介

  数组:用一个固定的字符串,代替多个不固定字符串。

  变脸:用一个固定的字符串,代替多个不固定字符串。

 

2.数组类型

  普通数组:只能使用整数作为数组索引

  关联数组:可以使用字符串作为数组索引

  

  普通数组

 

    

 

     

 

     echo "${name:3:4}"  意思是name变量中从索引3开始显示4个

    这叫变量切片,不常用

 

    

 

     

 

     

 

    编写数组方法

    hero=(aaa bbb ccc ddd)

    hero=([0]=aaa [1]=bbb [2]=ccc)

    查看指定值

    echo  ${hero[2]}  ccc

    echo ${hreo[@]:1:2}  bbb ccc

    查看所有值

    echo ${hero[*]}  aaa bbb ccc

    echo ${hero[@]}  aaa bbb ccc

    查看所有索引

    echo ${!hero[*]}  0 1 2

    查看所有普通型数组

    declare -a

 

  关联数组

    

 

    

 

 

     索引是文字型的

    declare -A hero  要先声明,而且数组要先声明再创建,已有数组名无法转化成关联数组

    hero=([up]=aaa [center]=bbb )

    

 

    

 

    关联数组是无序的

 

  还有其他赋值方法(一次赋予多个值)

  array3=(`cat /etc/passwd`)

  

 

  array4=(tom jack alice "bash shell")

  

 

  colors=($red $bule)

  

 

  array6=(1 2 3 4 5 "linux shell" [20]=echoo)

  

 

 

  还有其他赋值方法(一次赋予一个值)

  array7[0]=pear

  array7[1]=apple

  array7[2]=orange

  

 

 

  declare -A ass_array1

  ass_array1[good]=pear

  ass_array1[well]=apple

  ass_array1[bad]=orange

  

 

  例子

  

 

  

 

  优化输出

  

 

  

 

   优化输出

  

 

  

 

 

 统计性别

   vim sex.txt

  

 

  

  把文件的内容用输入重定向传给while,是一行行的读取 

 

  

 

  for是以空格为分隔符读取

  

  完整答案

  

 

  

 

 

  给关联数组添加元素

  

 

 

  统计

  

 

 

  完成/etc/passwd中shell的统计

  

 

  awk -F:  这里的-F是自定义切割符,我们选择的是以“:”为切割符取第7个值

  

 

 

  切片

  

 

posted @ 2022-02-12 23:33  真渡  阅读(58)  评论(0)    收藏  举报