您的位置:首页 > 运维架构 > Shell

bash 数组

2016-05-23 21:51 316 查看
Bash提供一维标和关联数组变量。任何变量也可以用作索引数组;内建命令declare将明确地声明数组。有上数组的大小,也没有成员索引或者连续赋值的要求没有上限。索引数组使用整数(包括算术表达式)引用并zerobased;关联数组使用任意的字符串引用。

如果任何变量被分配到使用的语法名称[下标] =值的索引数组被自动创建。下标被视为一个算术表达式的值必须为数字。显式声明索引数组,使用声明-a名(参见下面的shell内建命令)。声明-a名[下标]也是可以接受的;下标被忽略。

关联数组使用声明-A名称创建。

属性可以使用声明数组变量指定和只读的内置插件。每个属性应用到阵列的所有成员。

数组分配给使用表单名称=(值1…值),其中每个值的形式[下标]=字符串的复合赋值。索引数组分配不要求什么,但字符串。当分配给索引数组,如果可选的括号和下标被提供,该指标被分配到;否则分配的元素的索引是由语句分配给加一最后一个索引。索引从零开始。

当分配给关联数组,需要下标。

这个语法也被内建命令declare所接受。单独的数组元素可能被分配到使用上面介绍的名称[下标]= value语法。

当分配给索引数组,如果名字是由一个负数下标,这个数字被解释为相对人比名字的最大指数越大,所以负索引数从数组的末尾后面,指数-1引用的最后一个元素。

数组的任何元素都可以用名[下标]引用。大括号是必需的,以避免与路径扩展冲突。如果下标@∗的,字扩展到名字的所有成员。只有当词出现在双引号内这些标不同。如果字是双引号, {名称[]}扩展到由IFS特殊变量的第一个字符分隔每个数组成员的值一个字,和名称[@]扩展的每个元素命名为一个词。当没有阵列成员, {名称[@]}扩展到什么。如果一个字内发生双引号扩展,第一个参数的膨胀接合与原始字的开始部分,并在最后一个参数的膨胀接合与原始字的最后一部分。这类似于特殊参数的扩展和@(见上述特殊参数)。#名[下标]扩展到{长名[下标]}。如果下标是*或@,膨胀是数组中元素的数量。引用数组变量无下标相当于引用为0的下标数组。如果下标用来评估索引数组的一个元素引用到一个小于零,它被解释为相对于大于阵列的最大指数,所以负指数从阵列的末端计数背面,以及一个的-1索引引用的最后一个元素。数组变量被认为是集如果下标已被分配一个值。空字符串是一个有效的值。

它有可能获得的阵列的键(索引)以及值。!name[@]和{!name[]} 扩大到数组变量名称分配的指数。在双引号时,处理类似于特殊参数的扩展@和双引号之内。

未固化的内建被用来摧毁阵列。未设置 name[subscript]在破坏指数下标数组元素。负下标,以索引的数组如上所述解释。必须小心以避免由路径扩展不希望的副作用。未设置的名称,其中名称是一个数组,或取消名称[下标],其中下标是*或@,删除整个阵列。

项目申报,地方和只读建宏每个接受-a选项来指定索引数组和-A选项来指定一个关联数组。如果提供两个选项,-A优先。内置的读取接受-a选项指定从标准输入读取到一个数组中的单词列表。集合和的方式,使它们能够被重复使用作为分配声明建宏显示器阵列值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: