Dynamic variable names for an array in bash

前端 未结 2 1946
醉酒成梦
醉酒成梦 2021-01-06 23:11

I have an array called \"loop\".

For each element in \"loop\" I want to create an array whose name contains the text of the current element.

I then want to l

相关标签:
2条回答
  • 2021-01-07 00:04

    It ain't pretty, but it's a start:

    #!/bin/bash
    loop=(
    first
    second
    third
    )
    
    for word in "${loop[@]}"    
    do
        var=${word}_holder
        eval "declare -a ${var}"
        eval "${var}=( Hello World )"
        eval 'nEntries=${#'${var}'[@]}'
        echo ${var}
        for (( ii=0; ii<$nEntries; ii++ )); do
           cmd='echo ${'${var}'['$ii']}'
           eval ${cmd}
        done
    done
    
    0 讨论(0)
  • 2021-01-07 00:06
    for word in "${loop[@]}"; 
    do 
       name="${word}_holder";
       declare -a "$name"; 
       declare -n arr="$name";
       echo $name;
       arr=(hello world);
       arr_ref="$name[@]";
       for w in "${!arr_ref}";
       do 
          echo $w; 
       done; 
    done;                             
    
    first_holder                                                                                                                              
    hello                                                                                                                                     
    world                                                                                                                                     
    second_holder                                                                                                                             
    hello                                                                                                                                     
    world                                                                                                                                     
    third_holder                                                                                                                              
    hello                                                                                                                                     
    world     
    

    Of course there is no point of doing all this if you are not going to refer to the dynamically generated arrays (first_holder, etc) ever.

    0 讨论(0)
提交回复
热议问题