- A+
bash3.x不支持关联数组(associative arrays)结构,只支持用数值作数组索引,如
1 2 3 |
declare -a Myarray Myarray[1]=”www.ttlsa.com” Myarray[2]=”39514058” |
bash4.x支持关联数组结构,如
1 2 3 |
declare -A Myarray Myarray['website']=”www.ttlsa.com” Myarray['QQqun']=”39514058” |
支持关联数组结构,将大大方便定义变量,更好的写出方便简洁的代码。简单就是美。
我工作中看到一推if...elsif...else语句,十多个判断,眼睛都看花了,修改起来也不方便。顺便改了下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/bash # ftpserver=( "121.207.242:ftpserver1.backup.xx.com" "121.207.240:ftpserver2.backup.xx.com" "121.207.250:ftpserver3.backup.xx.com" ) function process_array() { declare -a hash=("${!1}") key="${2}" for ftpsrv in "${hash[@]}"; do # key: ${ftpsrv%%:*} # value: ${ftpsrv##*:} if [ $key = ${ftpsrv%%:*} ];then ftpserver=${ftpsrv#*:} echo $ftpserver fi done } ftp_s=$(process_array ftpserver[@] "121.207.250") echo $ftp_s |
说明下,"121.207.242:ftpserver1.backup.xx.com",':'前面是key,后面是value,不同的IP段对应不同的ftp地址。没有全部把if...elsif...else语句条件罗列到变量ftpserver。要添加更改相关信息,只需更改ftpserver变量即可。
如需转载请注明出处:bash3与bash4数组结构 http://www.ttlsa.com/html/1925.html

微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
07/05/2014 下午 10:17 沙发
这个功能很赞