Como usar a entrada do usuário com uma variável existente

0

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)
    
por yellavon 05.09.2012 / 16:38

2 respostas

2

Use a expansão indireta de parâmetros:

for item in ${!userInput} ; do
    ...
done

Você deve validar $ userInput antes de executar o loop.

    
por 05.09.2012 / 16:49
0

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.

    
por 05.09.2012 / 16:49