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

Résolu
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. Contributeur
    Salut,

    Et qu'as-tu commencé à faire ?
    Quelle piste as-tu explorée ?
    0
    1. 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
      1. Modérateur
        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
        1. Modérateur
          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
          1. Problème résolu, merci a vous :)
            0