zoukankan      html  css  js  c++  java
  • shell 数组

    http://blog.sina.com.cn/s/blog_7429b9c80100usiq.html

    1. 数组的定义

     
    Bash中还可以使用数组变量,其赋值有两种:
    (1) name = (value1 ... valuen) 
    此时下标从0开始,也可以:names=([2]=alice [0]=hatter [1]=duchess)
    (2) name[index] = value

    shell中数组的下标默认是从0开始的

    举例如下:
     
    array=(a b c d e)
    注意只能使用空格分隔,不能够使用其它符号分隔。举例如下:
     
    =========
    #!/bin/sh
    array1=(1,2,3,4,5,678,9)
    array2=(1 2 3 4 5 678 9)
    length1=${#array1[@]}
    length2=${#array2[@]}
    for ((i=0; i<$length1; i++));
    do
          echo array1[$i]=${array1[$i]}
    done
    for ((i=0; i<$length2; i++));
    do
          echo array2[$i]=${array2[$i]}
    done
    ==========
    将上述脚本保存为t.sh并执行后可见结果如下:
    [root@localhost vietnam]# sh t.sh 
    array1[0]=1,2,3,4,5,678,9
    array2[0]=1
    array2[1]=2
    array2[2]=3
    array2[3]=4
    array2[4]=5
    array2[5]=678
    array2[6]=9
     
    此时发现array1只有一个元素,而array2则有7个元素,因此需要特别注意。
     
    如果遇到数据元素很多,需要换行时可以使用如下方法定义:
    SERVER=("192.168.1.1" \
    "192.168.1.2" \
    "192.168.1.3" \
    "192.168.1.4" \
    "192.168.1.5" \
    "192.168.1.6" \
    "192.168.1.7")
    注意括号与第一个和最后一个元素必须紧邻,不能有空格。
     
     
    2. 数组的遍历
     
    2.1 
    ====
    #!/bin/sh
    array=(1 2 3 4 5 678 9)
    length=${#array[@]}
    for ((i=0; i<$length; i++));
    do
          echo array[$i]=${array[$i]}
    done
    ====
     
    2.2
    ===
    #!/bin/sh
    array=(1 2 3 4 5 678 9)
    for _id_ in ${array[@]};
    do
          echo $_id_
    done
    ===
     
    3. 其它注意事项
    3.1 注意"${array[*]}"与${array[*]}的区别,在加引号时,*则作为一个整体的字符串返回
    =====
    #!/bin/sh
    array=(1 2 3 4 5 678 9)
    for _id_ in "${array[*]}";
           do
                  echo \"*\" array $_id_
           done
     
    for _id_ in ${array[*]};
           do
                  echo \* array $_id_
           done
    ===
    [root@localhost vietnam]# sh t.sh
    "*" array 1 2 3 4 5 678 9
    * array 1
    * array 2
    * array 3
    * array 4
    * array 5
    * array 678
    * array 9
     
    ===
    array=(1 2 3 4 5 678 9)
     
    显示目前有值的数组序号:――bash 3.0以后才支持。
    echo ${!array[@]}
    0 1 2 3 4 5 6
     
    取得数组元素的个数
    echo ${#array[@]}
    7
     
    显示第3个元素里面的元素的个数:
    echo ${#array[5]}
    3
    echo ${#array[1]}
    1
  • 相关阅读:
    Interesting Finds: 2008.06.12
    8月19号
    8月22号
    8月20号
    8月21号
    第七章 Nginx配置虚拟主机
    第六章 Nginx配置文件详解
    第五章 Nginx搭建上传作业平台
    sqlserver2005提供的xml数据类型操作xml串
    事必躬亲利与弊
  • 原文地址:https://www.cnblogs.com/cnland/p/2949972.html
Copyright © 2011-2022 走看看