Bash lido dentro de um problema de loop while

0

Estou tentando avisar o usuário para entrar, diga "5" ou "10" e, em seguida, armazene-o como uma variável. E se eles não digitarem nenhum desses dois números, continue a avisá-los até que eles entrem. Eu tentei executar o código a seguir, mas parece que não funciona.

read -p 'Please enter your number. (5 or 10) ' num_choice

while (( $num_choice != 5|10))

do

read 'Please enter \"5\" or \"10\"' num_choice

done

echo "You've chosen the number $num_choice"

Além disso, parece que as citações de bloco não me permitem usar espaçamento simples, nem indentação. Estou assumindo que estou fazendo algo errado. Peço desculpas, sou bastante novo no script! Obrigada!

    
por Afflickted 30.09.2014 / 17:26

1 resposta

0

Você não pode usar 5|10 no lado direito de um comparador. Você tem que "distribuir" a comparação

num_choice=0
while (( num_choice != 5 && num_choice != 10 )) ; do
    read -p 'Please enter your number (5 or 10)' num_choice
done
echo "You've chosen $num_choice"

Observe que você ainda pode receber erros se o usuário especificar uma string não numérica.

    
por 30.09.2014 / 17:37