Array of arrays in bash

前端 未结 6 1136
日久生厌
日久生厌 2020-12-24 05:09

I\'m attempting to read an input file line by line which contains fields delimited by periods. I want to put them into an array of arrays so I can loop through them later on

6条回答
  •  抹茶落季
    2020-12-24 06:06

    Knowing that you can split string into "array". You could creat a list of lists. Like for example a list of databases in DB servers.

    dbServersList=('db001:app001,app002,app003' 'db002:app004,app005' 'dbcentral:central')
    
    # Loop over DB servers
    for someDbServer in ${dbServersList[@]}
    do
        # delete previous array/list (this is crucial!)
        unset dbNamesList
        # split sub-list if available
        if [[ $someDbServer == *":"* ]]
        then
            # split server name from sub-list
            tmpServerArray=(${someDbServer//:/ })
            someDbServer=${tmpServerArray[0]}
            dbNamesList=${tmpServerArray[1]}
            # make array from simple string
            dbNamesList=(${dbNamesList//,/ })
        fi
    
        # Info
        echo -e "\n----\n$someDbServer\n--"
    
        # Loop over databases
        for someDB in ${dbNamesList[@]}
        do
            echo $someDB
        done
    done
    

    Output of above would be:

    ----
    db001
    --
    app001
    app002
    app003
    
    ----
    db002
    --
    app004
    app005
    
    ----
    dbcentral
    --
    central
    

提交回复
热议问题