Use a expansão indireta de parâmetros:
for item in ${!userInput} ; do
...
done
Você deve validar $ userInput antes de executar o loop.
Estou tentando escrever um script em que a escolha da lista é configurável com o loop for:
list1="name1 name2"
list2="name3 name4"
echo "which list do you want to use? (list1 or list2)"
read userInput
for item in $userInput
do ....
Isso não está funcionando. Eu também tentei isso abaixo, mas também não tive sorte.
for item in $($userInput)
Ele funciona, apenas não use o loop for item in
. Isso funciona para matrizes. O que você leu em $ userInput é uma string. Tente algo assim:
#!/bin/bash
list1="name1 name2"
list2="name3 name4"
echo "which list do you want to use? (list1 or list2)"
read userInput
if [ $userInput == "list2" ] ;
then
something
else
something else
fi
Obviamente, altere "algo" e "outra coisa" para o que seu script precisa fazer.
Tags linux shell-script