shell脚本定义数组 Bash Shell脚本中的数组使用实例
不必单独初始化数组的每个元素,可以通过使用括号指定元素列表(由空格分隔)来声明和初始化数组。下面是语法:
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
4.获取数组的长度
可以使用$和#的特殊参数来获取数组的长度。${#arrayname[@]} 可以获取数组长度。
[root@localhost ~]# cat arraymain2.sh
#! /bin/bash
declare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora')
echo ${#Unix[@]} #数组中元素的数量
下面是输出,可以看到第一行输出参数为5个。第二行输出第一个元素的字符数量是6个。
[root@localhost ~]# ./arraymain2.sh
5
6
5.数组中某个元素的长度
${#arrayname[n]} 给出数组中的n个元素的长度。
[root@localhost ~]# cat arraymain.sh
#! /bin/bash
Unix[0]='Debian'
Unix[1]='Red hat'
Unix[2]='Ubuntu'
Unix[3]='Suse'
echo ${#Unix[3]} #位于索引3的元素的长度。
以下是输出shell脚本定义数组,可以看到输出index为3的值为"Suse"的字符长度是4。
[root@localhost ~]# ./arraymain.sh
4
6.按数组的偏移量和长度提取
下面的示例显示了从名为Unix的数组中从索引位置3开始提取2个元素的方法。
[root@localhost ~]# cat arraymain.sh
#! /bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux')
echo ${Unix[@]:3:2}