whiptail requer três números antes de continuar

1

Eu tenho este formulário whiptail que solicita a entrada do usuário. Existe uma maneira de forçar alguém a digitar três números antes de permitir que ele continue?

NUMBERS=$(whiptail --inputbox "Enter three numbers only" 8 78 000
--title "Three Numbers" 3>&1 1>&2 2>&3)

exitstatus=$? if [ $exitstatus = 0 ]; then
    echo "User selected Ok and entered " $NUMBERS else
    echo "User selected Cancel." fi

echo "(Exit status was $exitstatus)"
    
por aristosv 27.05.2016 / 15:48

1 resposta

0

Você pode verificar o que o usuário digitou e executar seu whiptail em um loop até que eles insiram um valor válido:

#!/usr/bin/env bash

## I included the 000 in the regex below since
## you are populating your field with it. I assume you
## want 000 + 3 numbers.
until [[ $numbers =~ ^000[0-9]{3}$ ]]; do
        numbers=$(whiptail --inputbox "Enter three numbers only" 8 78 000 --title "Three Numbers" 3>&1 1>&2 2>&3)
        exitstatus=$?
        if [ $exitstatus = 0 ]; then
                echo "User selected Ok and entered " $numbers
        else
                echo "User selected Cancel."
                break;
        fi
done

echo "(Exit status was $exitstatus)"

Note que também alterei o NUMBERS para numbers . Como regra geral, evite nomes de variáveis de capital em scripts bash, pois as variáveis de ambiente globais estão em maiúsculas e isso pode causar confusão.

    
por 27.05.2016 / 16:07