Bash数组


Bash数组
1.描述
  Bash的数组,其元素的个数没有限制。数组的索引由0开始,但不一定要
连续(可以跳号)。索引也可以算术表达式。bash仅支持一维数组。
1.1 declare
  名称:设置变量和属性(可以用来声明一个数组)
  用法:
 
      declare [-aAfFilrtux] [-p] [Name[=Value]...]
  选项:
      -f 显示函数名和函数定义
      -F 仅显示函数名
      下面是用来设置属性的选项
       -a  表示Name为一个索引数组
       -A  表示Name为一个关系数组
       -i  表述Name为一个整数
       -l  将Name的值转换为小写
       -u  将Name的值转换为大写
       -r  表示Name为一个只读变量
       -x  表示Name为输出变量(输出为全局变量)
       -t  表示Name具有'trace'属性
      使用'+'替代'-'来关闭指定的属性
      当用在一个函数内部时,declare等价local
  实例:
 
      declare -A myarray  #声明一个关系数组myarray
      myarray[1]=val1
      myarray[item2]=val2
1.2 数组的用法
   [1].建立数组
       格式:
           数组名[索引]=值
           ......
       例:
           A[0]=val1
           A[1]=val2
           A[2]=val3
    [2].引用数组的元素值
 
        格式:
           ${数组名[索引]}
         例:
           echo ${A[0]}
    [3].一次设置一个数组的多个元素的值
 
         格式:
           数组名=([索引]=val [索引]=val2 ...)或
           数组名=(val1 val2 val3 ...)
         实例:
           B=(1 2 3 4 5)
           B=([0]=1 [1]=2 [2]=3 [3]=4 [4]=5)
    [4].一次取出数组的所有元素
          格式:
            ${数组名[@]}  (取出的每个元素以空白符隔开)
            ${数组名[*]}  (取出的元素组成一个字符串)
    [5].获得数组的元素的个数
          格式:
            ${#数组名[@]} 或 ${#数组名[*]}
    [6].取得某个元素的长度
          格式:
            ${#数组名[索引]}
    [7].取消数组或数组元素的设置
          格式:
            unset 数组名
            unset 数组名[索引]
 或 ${#数组名[*]}
    [6].取得某个元素的长度
          格式:
            ${#数组名[索引]}
    [7].取消数组或数组元素的设置
          格式:
            unset 数组名
            unset 数组名[索引]
1.3 mapfile
   名称:从标准输入中读取到一个索引数组中
   用法:
 
       mapfile [-n Count] [-O origin] [-s Count] [-t] [-u FD]
               [-C Callback] [-c Quantum] [Array]
   描述:
       从标准输入中读取并输出到一个数组中,也可以通过指定-u FD来从一个文件中读取
  若没指定数组名,则默认为MAPFILE
   选项:
      -n Count:最多读取Count行,若Count为0则表示读取所有行
      -O Origin:数组的索引从Origin开始,默认为0
      -s Count:忽略前Count行
      -u FD:从指定的文件描述符FD中读取,默认为从标准输入中读取
      -t:从读取的每一行后面移除换行符
   参数:
      Array :指定数组名,默认为MAPFILE
   实例:
      mapfile myarray < file.txt
      #将file.txt的内容保存为数组myarray.数组的每个元素为一行

  

 
作者“huangyandong”

相关内容

    暂无相关文章