Duas ou mais perguntas sim / não em um script? [fechadas]

0

Estou escrevendo um script que tem uma pergunta "sim / não", mas agora quero ter outra pergunta sim / não nela. O script só consegue lidar com um sim / não, então como posso ter duas ou mais perguntas sim / não em?

O script sim / não é:

read -p "Do you want to install this programme? " yn 
case $yn in 
[Yy]* ) sudo apt-get install "$programme";; 
[Nn]* ) exit;; 
* ) echo "Please answer yes or no. ";; 
esac 
exit
    
por boudiccas 17.11.2013 / 09:06

2 respostas

1

O problema que você pode estar enfrentando aqui é um dos escopo. Em outras palavras, o valor de uma variável é definido em um determinado ponto em seu script e esse valor de variáveis é retido por toda parte. Mais tarde, você se depara com o problema de que, como a variável está definida (isto é, tem um valor), sua condicional é avaliada como esperado.

Aqui está um exemplo de código para dar um exemplo

foo ()
{
    local yn
    read -p "Do you want to install this programme? " yn
    case $yn in
        [Yy]* ) echo $yn;;
        [Nn]* ) exit;;
        * ) echo "Please answer yes or no. ";;
    esac
}
foo
echo $yn

Agora, observe quando você executa esse exemplo de código que quando $ yn é ecoado no escopo de foo () que ele retorna com o que você inseriu, mas fora desse escopo está vazio. Quando declaro a variável local para a função foo (por exemplo, {}), ela é indefinida fora dela. Se você quiser reutilizar nomes de variáveis sem que eles entrem em conflito uns com os outros, é assim que é feito.

    
por 17.11.2013 / 09:47
0

Não tenho certeza se recebo a pergunta, mas presumo que sim.

Use apenas um nome de variável diferente para cada pergunta, se quiser manter essas opções para leitura posterior em seu script.

Ou seja. apenas copie e cole o que você tem lá, mas mude yn para yn_2 por exemplo, então use essa variável em sua declaração de caso também.

    
por 17.11.2013 / 09:09