以下为输出:
[root@localhost ~]# ./arraymain.sh
Debian Ubuntu Suse Fedora UTS OpenLinux
在此示例中,${Unix[@]:0:$pos}值获取第1个索引的元素,,而${Unix[@]:$(($pos + 1))}将从第3个索引到最后一个索引。并合并以上两个输出。这是从数组中删除元素的解决方法之一。
11.使用正则表达式删除数组中的元素
在搜索条件中,可以给出正则表达式,并将剩余的元素存储到另一个数组中,如下所示。
[root@localhost ~]# cat arraymain2.sh
#! /bin/bash
declare -a Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora')
declare -a pattern=( ${Unix[@]/Red*/} )
echo ${pattern[@]}
以下为输出:
[root@localhost ~]# ./arraymain2.sh
Debian Ubuntu Suse Fedora
上面的示例中删除了包含"Red"字符的元素。实际是将"Red*"替换为空字符。
12.复制数组
以下实例是将Unix数组复制到Linux数组中:
[root@localhost ~]# cat arraymain.sh
#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux')
Linux=("${Unix[@]}")
echo ${Linux[@]}
以下为输出:
[root@localhost ~]# ./arraymain.sh
Debian Red hat Ubuntu Suse Fedora UTS OpenLinux
13.两个数组的关联
展开两个数组的元素,然后将其分配给新数组:
[root@localhost ~]# cat arraymain.sh
#!/bin/bash
Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux');
Shell=('bash' 'csh' 'jsh' 'rsh' 'ksh' 'rc' 'tcsh');
UnixShell=("${Unix[@]}" "${Shell[@]}")
echo ${UnixShell[@]}
echo ${#UnixShell[@]}
以下为输出:
[root@localhost ~]# ./arraymain.sh
Debian Red hat Ubuntu Suse Fedora UTS OpenLinux bash csh jsh rsh ksh rc tcsh
14
该实例同时打印数组“ Unix”和“ Shell”数组的元素shell脚本定义数组,并且新数组的元素数为14个。
14.删除整个数组