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

     
    shell数组的定义:
    方法一,用小括号将变量值括起来赋值给数组变量,每个变量之间要用空格进行分隔
    语法如下
    array = ( value1 value2 value3 ... )

    示例如下
    [root@localhost ~]# array=(1,2,3)
    [root@localhost ~]# echo ${array[*]}
    1,2,3

    方法二,用小括号将变量值括起来,同时采用键值对的形式赋值
    语法如下
    array=([1]=one [2]=two [3]=three)

    示例如下
    [root@localhost ~]# array=([1]=one [2]=two [3]=three)
    [root@localhost ~]# echo ${array[*]}
    one two three
    [root@localhost ~]# echo ${array[1]}
    one
    [root@localhost ~]# echo ${array[2]}
    two
    [root@localhost ~]# echo ${array[3]}
    three

    方法三,通过分别定义数组变量的方法来定义
    注意:这种定义方法比较麻烦,不推荐使用
    语法如下
    array[0]=a; array[1]=b; array[2]=c

    示例如下
    [root@localhost ~]# array[0]=a; array[1]=b; array[2]=c
    [root@localhost ~]# echo ${array[0]}
    a
    [root@localhost ~]# echo ${array[1]}
    b
    [root@localhost ~]# echo ${array[2]}
    c

    方法四,动态的定义数组变量,并使用命令的输出结果作为数组的内容
    语法如下
    array=( $(命令) )
    或者:
    array=( `命令` )

    示例如下
    [root@localhost backup]# mkdir array/ -p
    [root@localhost backup]# touch array/{1..3}.txt
    [root@localhost backup]# ls -l array
    总用量 0
    -rw-r--r--. 1 root root 0 6月 16 11:28 1.txt
    -rw-r--r--. 1 root root 0 6月 16 11:28 2.txt
    -rw-r--r--. 1 root root 0 6月 16 11:28 3.txt
    [root@localhost backup]# array=($(ls array))
    [root@localhost backup]# echo ${array[*]}
    1.txt 2.txt 3.txt

    打印数组元素
    打印单个数组用 ${数组名[下标]} ,当未指定数组下标时,数组的下标从0开始
    [root@localhost ~]# array=(one two three)
    [root@localhost ~]# echo ${array[0]}
    one
    [root@localhost ~]# echo ${array[1]}
    two
    [root@localhost ~]# echo ${array[2]}
    three
    [root@localhost ~]# echo ${array[*]} #<== 使用* 或者@ 可以得到整个数组的内容
    one two three
    [root@localhost ~]# echo ${array[@]} #<== 使用* 或者@ 可以得到整个数组的内容
    one two three


    打印数组元素的个数
    [root@localhost ~]# array=(one two three)
    [root@localhost ~]# echo ${array[*]} #<== 使用* 或者@ 可以得到整个数组的内容
    one two three
    [root@localhost ~]# echo ${#array[*]} #<== 获取数组个数
    3
    [root@localhost ~]# echo ${array[@]} #<== 使用* 或者@ 可以得到整个数组的内容
    one two three
    [root@localhost ~]# echo ${#array[@]} #<== 获取数组个数
    3


    数组赋值
    [root@localhost ~]# array=(one two three)
    [root@localhost ~]# echo ${array[*]}
    one two three
    [root@localhost ~]# array[3]=four
    [root@localhost ~]# echo ${array[*]}
    one two three four
    [root@localhost ~]# array[0]=zerooo
    [root@localhost ~]# echo ${array[*]}
    zerooo two three four
    [root@localhost ~]# array[1]=twooo
    [root@localhost ~]# echo ${array[@]}
    zerooo twooo three four


    数组的删除
    [root@localhost ~]# array=(one two three)
    [root@localhost ~]# unset array[1]
    [root@localhost ~]# echo ${array[*]}
    one three
    [root@localhost ~]# unset array
    [root@localhost ~]# echo ${array[*]} #<== 删除整个数组

    [root@localhost ~]#

    数组内容的截取和替换
    [root@localhost ~]# array=(1 2 3 4 5)
    [root@localhost ~]# echo ${array[*]:1:3} #<== 截取1号到3号数组元素
    2 3 4
    [root@localhost ~]# array=($(echo {a..z}))
    [root@localhost ~]# echo ${array[*]}
    a b c d e f g h i j k l m n o p q r s t u v w x y z
    [root@localhost ~]# echo ${array[*]:1:3} #<== 截取1号到3号数组元素
    b c d
    [root@localhost ~]# echo ${array[*]:0:2} #<== 截取0号到2号数组元素
    a b


    替换数组元素
    [root@localhost ~]# array=(1 2 3 1 1)
    [root@localhost ~]# echo ${array[*]/1/b}
    b 2 3 b b


    删除数组元素
    [root@localhost ~]# array=(one two three four five)
    [root@localhost ~]# echo ${array[*]}
    one two three four five
    [root@localhost ~]# echo ${array[*]#o*} #<== 从左边开始匹配最短的数组元素,并删除
    ne two three four five
    [root@localhost ~]# echo ${array[*]##o*} #<== 从左边开始匹配最长的数组元素,并删除
    two three four five
    [root@localhost ~]# echo ${array[*]%f*} #<== 从右边开始匹配最短的数组元素,并删除
    one two three
    [root@localhost ~]# echo ${array[*]%%f*} #<== 从右边开始匹配最长的数组元素,并删除
    one two three

  • 相关阅读:
    vj p1034题解
    2010.11.9南高模拟赛
    vj p1041神风堂人数 题解
    noi99钉子和小球 解题报告
    vj p1032题解
    vj p1037题解
    vj p1040题解
    vj p1038题解
    vj p1042捕风捉影 题解
    vj p1046 观光旅游 题解
  • 原文地址:https://www.cnblogs.com/l10n/p/13140065.html
Copyright © 2011-2022 走看看