第二十九章 数组
第二十九章 数组
数组。所有编程语言中都少不了数组,Shell语言也不例外,只不过支持程度非常有限。即便如此,在解决某些编程问题时,数组也能发挥大作用。
什么是数组
数组是一种可以一次存放多个值的变量,其组织形式类似与表格。数组中的每个变量叫做元素,每个元素都含有数据。数组可以通过索引来访问。
大多数编程语言支持多维数组,Bash中的数组是一维的。在Bash 2中首次引入了对数组的支持,最初的UNIXShell程序sh并不支持数组。
创建数组
数组变量和其它Bash变量一样,在访问变量时会自动创建。例如:
a[1]=foo
echo ${a[1]}
程序运行结果如下:
本例中第一个命令是数组a的第一个元素被赋值foo。第二个命令显示了第一个元素的值,其中的花括号是为了避免Shell试图对数组元素名执行路径名扩展。
也可以使用declare命令创建数组:
declare -a a
通过-a选项,declare创建了数组a。
为数组赋值
为数组赋值有两种方法,单个值可以使用下列方法:
name[subscript]=value
其中name是数组名,subscript是一个大于或等于0的整数(或者算术表达式)。数组的第一个元素索引是0,而非1。value是赋给该元素的字符串或整数。
多个值可以使用下列方法:
name=(value1 value2 ...)
其中,name是数组名,value是依次赋给数组元素的一系列值。
例如:将一周中各天的缩写赋给数组days
也可以通过指定各个值的索引,将值赋给特定元素:
访问数组元素
通过编写一个检查指定目录中的文件修改时间的脚本Hour来演示
代码如下:
#!/bin/bash#hours: 对文件的修改时间进行计数usage () {echo "usage: ${0##*/} directory" >