Verificar se a entrada do usuário é alfanumérica

0

Oi Eu não sou qualquer tipo de programador, mas encontrei-me criando um script de instalação que instala o mySQL, que funciona bem. Eu gostaria de melhorar o script pedindo ao usuário para digitar o texto que será usado para uma senha.

Meu entendimento é que uma maneira razoável de fazer isso seria usar os comandos 'echo' e 'read' para obter sua entrada e, em seguida, gostaria de verificar se apenas caracteres alfanuméricos padrão são usados e, se não, usuário para tentar novamente. Eu não fui capaz de compreender o grep ou o piping, então estou perguntando se alguém estaria disposto a escrevê-lo de uma forma que eu possa simplesmente colocá-lo em um script bash.

Esperando ns

    
por user85063 22.07.2014 / 03:54

1 resposta

2

Você pode tentar a seguinte função bash

#!/bin/bash

function get_password(){
    echo "Enter wour password: "
    read password
    if [[ -n "$password" ]]; then
        a=$(echo $password | tr -d "\n" | wc -c)
        b=$(echo $password | tr -cd "[:alnum:]" | wc -c)

        if [[ $a != $b ]]; then
            echo "Plz enter alphanumeric words"
            echo "Retry or Press Ctrl + C to exit"
            get_password
        else
            echo "it is fine"
            exit 0
        fi
    else
        echo "password can't be left empty"
        echo "Retry or Press Ctrl + C to exit"
        get_password
    fi
}

get_password

Como funciona:

./script.sh 
Enter wour password: 
12%
Plz enter alphanumeric words
Retry or Press Ctrl + C to exit
Enter wour password: 
^C

./script.sh 
Enter wour password: 
123sddf
it is fine

Veja man tr e man wc para saber mais sobre tr e wc .

    
por souravc 22.07.2014 / 06:15