How to pass an associative array as argument to a function in Bash?

后端 未结 8 2199
自闭症患者
自闭症患者 2020-11-27 03:50

How do you pass an associative array as an argument to a function? Is this possible in Bash?

The code below is not working as expected:

function iter         


        
8条回答
  •  生来不讨喜
    2020-11-27 04:51

    Based on Florian Feldhaus's solution:

    # Bash 4+ only
    function printAssocArray # ( assocArrayName ) 
    {
        var=$(declare -p "$1")
        eval "declare -A _arr="${var#*=}
        for k in "${!_arr[@]}"; do
            echo "$k: ${_arr[$k]}"
        done
    
    }
    
    declare -A conf
    conf[pou]=789
    conf[mail]="ab\npo"
    conf[doo]=456
    
    printAssocArray "conf" 
    

    The output will be:

    doo: 456
    pou: 789
    mail: ab\npo
    

提交回复
热议问题