热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

bash3与bash4版本的数组结构有何不同

内容如下bash3.x不支持关联数组(associativearrays)结构,只支持用数值作数组索引,如declare-aMyarrayMyarray[1]”www.ttlsa.

bash3与bash4数组结构的区别

bash3.x不支持关联数组(associative arrays)结构,只支持用数值作数组索引,如

declare -a Myarray
Myarray[1]=”www.ttlsa.com”
Myarray[2]=”39514058”

bash4.x支持关联数组结构,如

declare -A Myarray
Myarray['website']=”www.ttlsa.com”
Myarray['QQqun']=”39514058”

支持关联数组结构,将大大方便定义变量,更好的写出方便简洁的代码。简单就是美。
我们工作中看到一推if...elsif...else语句,十多个判断,眼睛都看花了,修改起来也不方便。
顺便改了下:

#!/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变量即可。


推荐阅读
author-avatar
曾吾翰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有