Vérifier l'entrée d'un utilisateur dans un script bash

Résolu
Beginer -  
 Beginer -
Bonjour,

Je souhaite créer une fonction intéractive qui vérifiera les données que rentre un utilisateur dans du bash.Par exemple en appellant cette fonction dans le script pour chaque vérification critique.

premier cas: je veux que mon utilisateur rentre un nom mais ce nom ne doit pas dépasser 10 caractères et doit obligatoirement commencer par médiaXXXXX les X représentants les 5 derniers caractères que l'user rentre pour faire le choix de son mot de passe.

second cas: l'utilisateur doit rentrer une date avec le format suivant, 03:10:16 donc dans ce cas la j'aimerais limité le nombre de caractère a 8 le : étant un caractère et faire en sorte que le : soit bien a sa place entre les deux chiffres de la datte.

Merci beaucoup.

5 réponses

  1. UnGnU Messages postés 1468 Statut Contributeur 158
     
    Salut,

    Et qu'as-tu commencé à faire ?
    Quelle piste as-tu explorée ?
    0
  2. Beginer
     
    Ben je ne sais du tout comment vérifier les données rentré par l'user.Les capturer je le fais avec read -p mais pour les vérifier je sais pas comment faire, surtout avec les chiffres.
    0
  3. jisisv Messages postés 3678 Statut Modérateur 936
     
    Construit les fonctions de validation et utilise une boucle:
    #! /bin/bash
    
    function test_identifier ()
    {
    # débute par "média", se termine par 54321
        [ $# -ne 1 ] && return 1;
        identifier="$1"
        
        if [ "X${identifier: 0 : 5}" = "Xmédia" -a "X${identifier: -5}" = "X54321" ] ; then
    # autres tests
     return 0
        fi
        return 1
    }
    
    ident=""
    until test_identifier "$ident" ;  do
        read -i "media" -p "Un identificateur: " ident
    done


    man bash # remplacement des paramètres/Parameter Expansion
    man test; man [
    help read

    Gates gave ^W  sold  you the windows.
    GNU gave us the whole house.(Alexandrin)
    0
  4. jisisv Messages postés 3678 Statut Modérateur 936
     
    Concernant les dates
    #! /bin/bash
    
    read -p "Quand?"  quand
    reg='^[0-9][0-9]:[0-9][0-9]:[0-9][0-9]$'
    echo $quand
    if [[ $quand =~  $reg ]] ; then
        echo "Peut-être une date"
    fi


    Puis tu extrais les sous-chaînes.
    Alternativement utilise le code d'erreur de la commande externe date utilisée correctement à partir des éléments. (man date)

    Concernant les entiers décimaux, ce code
    #! /bin/bash
    
    read -p "Nombre?"  the_int
    reg='^(\+|-)?[0-9]+$'
    echo $quand
    if [[ $the_int =~  $reg ]] ; then
        echo "$the_int peut-être un entier"
    fi
    sera plus fonctionnel et efficace
    Voir: man 1 bash
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Beginer
     
    Problème résolu, merci a vous :)
    0