bash3与bash4数组结构

默北 Shell 运维案例1 10,981字数 915阅读3分3秒阅读模式

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

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

bash4.x支持关联数组结构,如文章源自运维生存时间-https://www.ttlsa.com/shell/bash3-and-bash4-array/

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

支持关联数组结构,将大大方便定义变量,更好的写出方便简洁的代码。简单就是美。文章源自运维生存时间-https://www.ttlsa.com/shell/bash3-and-bash4-array/

我工作中看到一推if...elsif...else语句,十多个判断,眼睛都看花了,修改起来也不方便。顺便改了下:文章源自运维生存时间-https://www.ttlsa.com/shell/bash3-and-bash4-array/

#!/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变量即可。文章源自运维生存时间-https://www.ttlsa.com/shell/bash3-and-bash4-array/

如需转载请注明出处:bash3与bash4数组结构 https://www.ttlsa.com/html/1925.html文章源自运维生存时间-https://www.ttlsa.com/shell/bash3-and-bash4-array/ 文章源自运维生存时间-https://www.ttlsa.com/shell/bash3-and-bash4-array/

weinxin
我的微信
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北
  • 本文由 发表于 31/07/2013 13:59:56
  • 转载请务必保留本文链接:https://www.ttlsa.com/shell/bash3-and-bash4-array/
评论  1  访客  1
    • 小小爽
      小小爽 9

      这个功能很赞

    评论已关闭!