Array indexing in shell

Hi ,
I have 4 array as below

Input:

servernames=(10.144.0.129 10.144.0.130 10.144.0.131)
subfolder_129=(PSTN_SigtranCamel_03 PSTN_SigtranCamel_04 PSTN_SigtranCamel_05)
subfolder_130=(SigtranCamel_11 SigtranCamel_12 SigtranCamel_13 SigtranCamel_14 SigtranCamel_15)
subfolder_131=(SigtranCamel_21 SigtranCamel_22 SigtranCamel_23 SigtranCamel_24 SigtranCamel_25)

Output:
For each elements of servernames array I need to select all elements of respective subfolder elements. i.e for server name 10.144.0.129 need to select all elemets of subfolder_129 array. and server 10.144.0.131 need to select all elements of subfolder_131.

I have writen below scripts but not working. Could please help me on this?

foldername=(subfolder_129 subfolder_130 subfolder_131, )
for server in $servernames
do
                j=0
                subfolder=${foldername[$j]}
                index=0
                echo $subfolder
                for x in ${"$subfolder"[$index]}; do
                echo $x

                done
done
j=0
subfolder=${foldername[$j]}
# index=0 no need of this
echo $subfolder
# for x in ${"$subfolder"[$index]}; do
for x in ${subfolder[@]}; do
echo $x
done

Thanks for you reply Frans.

But echo $X prints 'subfolder_130'. I want value SigtranCamel_11 in $x. how to do the same?

Regards,
SUshma

I replaced the subfolders arrays by blank separated strings (the arrays don't support the ${!VARIABLE} syntax.

#!/bin/bash
servernames=( 10.144.0.129 10.144.0.130 10.144.0.131 )
subfolder_129="PSTN_SigtranCamel_03 PSTN_SigtranCamel_04 PSTN_SigtranCamel_05"
subfolder_130="SigtranCamel_11 SigtranCamel_12 SigtranCamel_13 SigtranCamel_14 SigtranCamel_15"
subfolder_131="SigtranCamel_21 SigtranCamel_22 SigtranCamel_23 SigtranCamel_24 SigtranCamel_25"
for server in ${servernames[@]}
do
    subfolders="subfolder_${server##*.}"
    echo "server : $server"
    for x in ${!subfolders}
    do
        echo "x='$x'"
    done
done

Its working. This what I exactly wanted. Thank you so much Frans :slight_smile: