zoukankan      html  css  js  c++  java
  • shell 数组详细用法

    一 数组介绍

    1.什么是数组
    数组就是一系列元素的集合,一个数组内可以存放多个元素
    
    2.为何要用数组?
    我们可以用数组将多个元素汇总到一起,避免单独定义的麻烦
    

    二 数组的使用

    1.数组的定义
    # 方式一:array=(元素1 元素2 元素3) 
    array=(egon 18 male)
    
    # 方式二:
    array=([key1]=value1 [key2]=value2 [key3]=value3) array=([0]=111 [1]="two" [2]=333)
    
    # 方式三:依次赋值 
    array_new[0]=111 
    3array_new[1]=222 
    array_new[2]="third"
    
    # 方式四:利用执行命令的结果设置数组元素:array=($(命令)) 
    或者 array=(`命令`) 该方式会将命令的结果以空格为分隔符切成多个元素然后赋值给数组 
    [root@aliyun ~]# ls /test a.txt b.txt 
    [root@aliyun ~]# array3=(`ls /test`) 
    [root@aliyun ~]# declare -a |grep array3 
    declare -a array3='([0]="a.txt" [1]="b.txt")'
    
    # ps:查看声明过的数组 declare -a
    
    
    1.2 访问数组内元素
    [root@aliyun ~]# array=(egon 18 male) 
    
    # 1、按照索引访问数组内指定位置的元素 
    [root@aliyun ~]# echo ${array[0]} 
    egon [root@aliyun ~]# echo ${array[1]} 
    18
    
    [root@aliyun ~]# echo ${array[2]} 
    male 
    
    [root@aliyun ~]# echo ${array[-1]} # 支持负向索引 
    male
    
    # 2、访问数组内全部元素信息 
    [root@aliyun ~]# echo ${array[*]} 
    egon 18 male
     
    [root@aliyun ~]# echo ${array[@]} 
    egon 18 male
    
    # 3、获取数组元素的长度 
    [root@aliyun ~]# echo ${#array[*]} 
    3
    
    [root@aliyun ~]# echo ${#array[@]} 
    3
    
    1.3 修改/添加数组元素
    [root@aliyun ~]# array=(egon 18 male) 
    [root@aliyun ~]# array[0]="EGON" # 修改 
    [root@aliyun ~]# array[3]="IT" # 添加 
    [root@aliyun ~]# declare -a |grep array 
    declare -a array='([0]="EGON" [1]="18" [2]="male" [3]="IT")'
    
    1.4 删除数组元素
    [root@aliyun ~]# unset array[0] 
    [root@aliyun ~]# echo ${array[*]} 
    18 male IT 
    
    [root@aliyun ~]# declare -a |grep array 
    declare -a array='([1]="18" [2]="male" [3]="IT")' 
    
    [root@aliyun ~]# unset array[2] 
    [root@aliyun ~]# declare -a |grep array 
    declare -a array='([1]="18" [3]="IT")'
    
    [root@aliyun ~]# unset array # 删除整个数组 
    [root@aliyun ~]# echo ${array[*]} 
    [root@aliyun ~]#
    
    1.5数组内元素的截取
    [root@aliyun ~]# array=(egon 18 male IT 1.80) 
    [root@aliyun ~]# echo ${array[*]:1} # 从索引1开始,一直到最后 
    18 male IT 1.80
    
    [root@aliyun ~]# echo ${array[*]:1:3} # 从索引1开始,访问3个元素 
    18 male IT
    
    [root@aliyun ~]# array=(one two three four five fire) 
    [root@aliyun ~]# echo ${array[*]#one}
    two three four five fire 
    
    [root@aliyun ~]# echo ${array[*]#f*e} 
    one two three four
    
    1.66 数组内容的替换
    [root@aliyun ~]# array=(one two three four five fire) 
    
    [root@aliyun ~]# echo ${array[*]/five/abc} 
    one two three four abc fire 
    
    [root@aliyun ~]# echo ${array[*]/f*e/abc} 
    one two three four abc abc
    
    

    三 关联数组

    数组分为两种
    
      普通数组:只能使用整数作为数组索引,我们前面介绍的都是普通数组
      关联数组:可以使用字符串作为数组索引,需要用declare -A声明
    声明关联数组
    [root@aliyun ~]# declare -A info 
    [root@aliyun ~]# info["name"]="egon" 
    [root@aliyun ~]# info["age"]=18 
    [root@aliyun ~]# info["gender"]="male"
    [root@aliyun ~]# 
    [root@aliyun ~]# declare -A |grep info 
    declare -A info='([gender]="male" [name]="egon" [age]="18" )' 
    [root@aliyun ~]# 
    [root@aliyun ~]# echo ${info[*]}
    male egon 18 
    [root@aliyun ~]# 
    [root@aliyun ~]# echo ${info["name"]} 
    egon
    

    四 遍历数组

    方法一: 利用获取所有信息进行遍历 (适用于普通数组与关联数组)
    
    # 例1 
    declare -A array 
    array=(["name"]="egon" ["age"]=18 ["gender"]="male") 
    
    for item in ${array[*]}
    do 
          echo $item 
    done
    
    # 例2 
    array=("egon" 18 "male") 
    for item in ${array[*]} 
    do 
          echo $item 
    done
    
    
    
    方法二: 通过数组元数的索引进行遍历(适用于普通数组与关联数组)
    
    # 例1
    declare -A array 
    array=(["name"]="egon" ["age"]=18 ["gender"]="male")
    
    for i in ${!array[*]} # echo ${!array[*]} # 获取的是key信息:name age gender
    do 
          echo "$i:${array[$i]}" 
    done
    
    # 例2 
    array=("egon" 18 "male") 
    for i in ${!array[*]} # echo ${!array[*]} 直接获取所有元素的索引信息 
    do 
          echo $i echo ${array[i]} 
    done
    
    方法三:根据数组长度信息进行遍历,(适用于普通数组)
    array=("egon" 18 "male") 
    for ((i=0;i<${#array[*]};i++)) 
    do 
          echo "$i:${array[$i]}" 
    done
    
  • 相关阅读:
    2017-3-31 操作属性 定时器 操作内容 操作相关元素 元素创建添加删除
    2017-3-30 Js实现导航栏,选项卡,图片轮播的制作
    2017-3-30 DOM查找元素 点击,鼠标移入,移除事件 样式控制
    Js产生随机数的几种方法
    2017-3-29 Js语法 DOM操作
    纯【css下拉菜单】
    2017-3-25 css样式表 去除按钮点点击是的绿色边框
    2017-3-23 网页中的表单 框架 标题栏小图标 描点 插入视频音频 简单的滚动条 css样式表
    【2017-2-21】C#分支语句,分支嵌套,变量的作用域
    【2017-2-20】C#运算符
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/14036319.html
Copyright © 2011-2022 走看看