Referência de variável indireta Bash

EDIT2: @glenn jackman Eu pensei que isso iria corrigi-lo, mas ainda está errado no meu script completo. Por que não está funcionando? É devido à referência indireta?

#!/home/$current_user/Desktop/expect
...
    COUNTER=0
         while [  $COUNTER -lt $num ]; do
             let index=COUNTER+1
             tmp=user_$index
             echo "Changing Password for " ${!tmp}
             echo ${!tmp}
             sudo passwd ${!tmp}
             expect -exact "[sudo] password for $current_user: "
             send "$pass\r"
             interact
             expect -exact "New password: "
             send "$password\r"
             interact
             let COUNTER=COUNTER+1 
         done

EDIT: O! ou o / $ funciona para chamar apenas variáveis dentro de outras variáveis. Preciso de ajuda para um caso em que a variável faz parte de uma string.

Eu tive uma pergunta rápida sobre referências de variáveis indiretas no Bash.

eval "\${user_$index\}"  #First attempt
echo \${eval "{user_\$index}"} #Second attempt

Basicamente, tenho várias variáveis nomeadas "user_num" onde onum é um número inteiro. Cada uma dessas variáveis contém um valor String. Eu quero chamar esse valor de string chamando a variável No entanto, como a variável tem uma variável dentro dela (num), Parece que não consigo fazê-lo funcionar. Procurei nas páginas do manual referências indiretas no Bash, mas elas não mencionam casos em que a variável dentro de outra variável está anexada a uma string.

TLDR: Minha pergunta é como você faz isso:

$(var_$num)

questionAnswers(1)

yourAnswerToTheQuestion