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)