o2o网站运维建设方案,奇璐荣获北京十大高端设计公司称号,电商购物网站开发,免费首页2空间Bash 提供了两种类型的数组#xff0c;分别是索引数组(indexed array)和关联数组(associative array)。本文主要介绍索引数组的基本用法。 索引数组的基本特点 Bash 提供的数组都是一维数组。任何变量都可以用作索引数组。通过 declare 关键字可以显式的声明一个索引数组。数组… Bash 提供了两种类型的数组分别是索引数组(indexed array)和关联数组(associative array)。本文主要介绍索引数组的基本用法。 索引数组的基本特点 Bash 提供的数组都是一维数组。任何变量都可以用作索引数组。通过 declare 关键字可以显式的声明一个索引数组。数组的大小是不受限制的。索引数组的元素的索引不必是连续的。通过从零开始的整数引用数组元素。除非另外注明索引数组必须使用非负的整数索引元素。 自动创建索引数组 通过赋值语句可以隐式的创建索引数组 $ myArr[0]apple 通过给索引为 0 的元素赋值变量 myArr 会被初始化成一个索引数组。当然也可以这样 $ myArr[3]orange 不用必须从索引 0 开始赋值。 显式声明一个索引数组 通过 declare 关键字和 -a 选项可以显式的声明索引数组 $ declare -a myArr 然后进行初始化 $ myArr(apple orange pear) 也可以在声明的时候进行初始化 $ declare -a myArr(apple orange pear) 或者在声明后只初始化某个元素 $ myArr[0]grape 引用数组元素 引用数组元素稍微麻烦些不仅要指定元素的索引位置还需要使用 ${} 符号。请注意索引数组的下标从 0 开始且不能为负数(真希望所有编程语言中的数组元素都从 0 开始索引)。 $ myArr[0]apple
$ echo ${myArr[0]} 如果不小心引用了没有赋值的元素呢不用担心这里没有程序崩溃的问题只不过没有输出内容而已 我们还可以轻松的输出数组的全部元素 $ declare -a myArr(apple orange pear)
$ myArr[10]grape
$ echo ${myArr[]} 第四个元素的索引是不连续的。我们可以获取到所有已经赋值元素的下标进行查看 $ echo ${!myArr[]} 变量也可以用来索引数组元素 $ declare -a myArr(apple orange pear)
$ i2$ echo ${myArr[$i]} 对于索引数组如果你不按规矩引用数组元素可能产生一些诡异的状况。比如用一个字符串代替非负的整数去索引元素会发生什么 $ declare -a myArr(apple orange pear)
$ echo ${myArr[hello]} 这往往不是你想要的结果。实际上无论你写什么样的字符串都会被当做 0 来处理。 添加数组元素 比较常见的数组操作是在数组的尾部添加新的元素(严谨点说这应该是队列的一个特征) $ declare -a myArr(apple orange pear)
$ myArr(${myArr[]} grape)
$ echo ${myArr[]} 请注意最后一行的输出这样添加的元素的索引是连续的。 把两个数组连接成一个也是比较常见的操作 $ declare -a myAbc(a b c)
$ myArr(${myArr[]} ${myAbc[]})
$ echo ${myArr[]} 提取子数组 提取部分数组元素 $ declare -a myArr(a b c d e f g)
$ echo ${myArr[]:2:3} 数组的长度 在 Bash 中引用数组长度的语法多少有些奇特 $ declare -a myArr(apple orange pear)
$ echo ${#myArr[]} 数组长度是指被赋值了的元素个数 $ myArr[10]grape
$ echo ${#myArr[]} 我们还可以获取到某个元素的长度 哈哈看起来有些像二维数组了 遍历数组元素 通过 for 语句可以像其它编程语言那样遍历数组中的元素 $ declare -a myArr(apple orange pear)
$ myArr[10]grape
$ for element in ${myArr[]}; do echo $element done 删除数组元素 $ declare -a myArr(apple orange pear)
$ unset myArr[1]
$ echo ${myArr[1]} 索引为 1 的元素已经为空了其实数组的长度也发生了变化 $ echo ${#myArr[]} 此时数组的长度已经变成了 2。 下面来个复杂点的 $ declare -a myArr(a b c d e f)
$ myArr(${myArr[]:0:3} ${myArr[]:4}) 上面的代码移除了元素 d 清空数组 $ declare -a myArr(apple orange pear)
$ unset myArr
$ echo ${myArr[]} 本文转自xsster51CTO博客原文链接 如需转载请自行联系原作者 本文转自xsster51CTO博客原文链接 http://blog.51cto.com/12945177/1948527如需转载请自行联系原作者