数组是一个包含多个值的变量,这些值可以是相同类型或不同类型。没有数组大小限制,也没有要求成员变量被连续索引或连续分配的限制。数组索引从0开始。 |
1.声明一个数组并赋值
在bash中,使用以下格式的变量时会自动创建数组:
name[index]=value
- name 是数组的名字。
- index 可以是任何数字或表达式,值必须等于或大于零。
要访问数组元素,请使用大括号,例如${name[index]}。下面是访问Unix数组中的第二个元素,以为数组索引从0开始,所以Unix[1]
就是第二个元素了。
[root@localhost ~]# cat arraymanip.sh #! /bin/bash Unix[0]='Debian' Unix[1]='Red hat' Unix[2]='Ubuntu' Unix[3]='Suse' echo ${Unix[1]}
执行脚本,以下是输出内容:
[root@localhost ~]# ./arraymain.sh Red hat
2.在声明期间初始化数组
不必单独初始化数组的每个元素,可以通过使用括号指定元素列表(由空格分隔)来声明和初始化数组。下面是语法:
declare -a arrayname=(element1 element2 element3)
如果元素具有空格字符,需要使用引号:
[root@localhost ~]# cat arraymain2.sh #! /bin/bash declare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora') echo ${Unix[4]}
下面是输出结果:
[root@localhost ~]# ./arraymain2.sh Fedora
declare -a
声明一个数组,括号中的所有元素都是数组的元素。
3.打印整个数组
有多种方法可以打印整个数组。如果索引号是 @ 或者 *
,则引用数组的所有成员。可以使用bash shell中的循环语句遍历数组元素并进行打印。
[root@localhost ~]# cat arraymain.sh #! /bin/bash Unix[0]='Debian' Unix[1]='Red hat' Unix[2]='Ubuntu' Unix[3]='Suse' echo ${Unix[@]}
下面是输出结果:
[root@localhost ~]# ./arraymain.sh Debian Red hat Ubuntu Suse