分类: LINUX
2012-12-26 10:28:22
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.数组的每个元素为一行
更多精彩的文章尽在: