zoukankan      html  css  js  c++  java
  • Shell中的数组

    一、数组的定义

    【数组元素的格式】

    ARRAY[index]

    index从0开始。

    【定义数组】

    在Bash中定义数组有两种方法:

    (1)直接在定义时为所有的数组元素赋值:

    [root@localhost shell]# ARRAY=(1 2 3 4 5)

    (2)对数组中每个数组元素进行赋值:

    [root@localhost shell]# ARRAY[0]=1; ARRAY[4]=5; ARRAY[3]=4

    使用这种方法对数组定义时,可以不按照数组下标的先后顺序进行操作,也不必对数组中的每一个元素赋值。

    提示:使用第二种方法时,如果出现了某些数组元素没有赋值的情况,系统将会自动将一个空值赋给这些元素。

    (3)如果需要修改数组中某个元素的值,可以使用数组定义中的第二种方法:

    [root@localhost shell]# ARRAY[1]=2
    [root@localhost shell]# ARRAY[2]=3
    ...

    二、数组的使用

    (1)如果需要引用数组中的某个元素,可以使用数组名加索引的方式:

    [root@localhost shell]# echo ${ARRAY[2]}
    3

    与其他语言中引用数组元素不同,在Bash中需要将数组元素放入大括号“{}”中,其目的是为了避免Bash将数组名误解为一个变量。

    (2)如果不指定数组索引,将会显示数组中的第1个元素的值:

    [root@localhost shell]# echo $ARRAY
    1

    (3)有时可能希望看到数组中所有元素的值,这样做的目的可能是为了检查其值是否有错误:

    [root@localhost shell]# echo ${ARRAY[*]}
    1 2 3 4 5

    上面示例中,“*”表示所有下标,也可以使用“@”。

    (4)当数组中的元素非常多时,可能查看起来非常不方便,这是可以指定查看的元素范围,例如:

    #查看数组中下标大于等于2的所有元素的值
    [root@localhost shell]# echo ${ARRAY[@]:2}
    3 4 5

    (5)有时需要获得数组的长度,即数组中一共有多少个元素。这是可以使用以下形式:

    [root@localhost shell]# echo ${#ARRAY[@]}
    5

    (5)示例脚本,按数组元素的值从小到大排序:

    [root@localhost shell]# cat example3.sh 
    #!/bin/bash
    
    #This is a example script.
    #2013/12/16
    
    ARRAY=(123 457 99 379 622 895 111 45 1000)
    LENTH=${#ARRAY[@]}
    I=0
    while [ "$I" -lt "$LENTH" ]
    do
            J=`expr $I + 1`
            while [ "$J" -lt "$LENTH" ]
            do
                    if [ "${ARRAY[J]}" -lt "${ARRAY[I]}" ]
                    then
                            TEMP=${ARRAY[J]}
                            ARRAY[J]=${ARRAY[I]}
                            ARRAY[I]=$TEMP
                    fi
                    J=`expr $J + 1`
            done
            I=`expr $I + 1`
    done
    echo ${ARRAY[@]}
    unset ARRAY I J TEMP LENTH
    [root@localhost shell]# ./example3.sh 
    45 99 111 123 379 457 622 895 1000

    三、清除数组

    不再使用数组时,应该清楚数组,以回收这些数组占用的系统资源。与变量相同,清除数组也使用unset命令。

    (1)清除数组ARRAY的第1个元素:

    [root@localhost shell]# unset ARRAY[0]

    (2)清除整个数组:

    [root@localhost shell]# unset ARRAY
    [root@localhost shell]# echo ${ARRAY[@]}
  • 相关阅读:
    css基础教程
    网页加载-上下幕布分开
    Vue-Aixos
    webpack学习
    Vue、Element 路由跳转,左侧菜单高亮显示,页面刷新不会改变当前高亮菜单
    Vue知识概括
    JSON.parse() 与 JSON.stringify()
    Bootstrap4 样式笔记
    ES6基础语法
    V-model 双向绑定的原理是什么?
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3477331.html
Copyright © 2011-2022 走看看