Shell Scripting - double condition com duas variáveis

0

Bom dia pessoal,

Eu tenho que fazer isso para a minha aula e não entendo como.

O script pedirá ao usuário duas declarações separadas que preencherão duas variáveis, L e C. Eu preciso verificar se L e C, ambos, estão entre o intervalo de 1 a 3. Se L ou C tiver um valor menor que 1 e / ou maior que 3 (fora do intervalo), o script precisará imprimir um aviso e solicitar novos valores.

printf "Please, enter L and C: "
read L C
while [[ $L -ge 1 -a $L -le 3 ]]; do
    while [[ $C -ge 1 -a $C -ge 3 ]]; do

Isso funciona como pretendido (o loop). Existe alguma maneira de lidar melhor com isso?

Obrigado,

Rafael

    
por Rafael Umbelino 29.06.2016 / 16:30

1 resposta

0

No interesse da legibilidade, eu faria algo como:

checkrange() {
   if [[ "$1" -le 3 ]] && [[ "$1" -ge 1 ]]; then
      return 0
   else
      return 1
   fi
}

L=0
C=0
prompt="Please enter values for L and C >"
while ! ( checkrange "$L" && checkrange "$C" ); do
   read -p "$prompt" L C
   prompt="Invalid input; please enter new values for L and C >"
done
    
por 30.06.2016 / 00:28