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

Résolu/Fermé
Beginer - 3 oct. 2016 à 13:51
 Beginer - 4 oct. 2016 à 09:20
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.


A voir également:

5 réponses

UnGnU Messages postés 1158 Date d'inscription lundi 2 mai 2016 Statut Contributeur Dernière intervention 22 décembre 2020 157
3 oct. 2016 à 14:27
Salut,

Et qu'as-tu commencé à faire ?
Quelle piste as-tu explorée ?
0
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
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
Modifié par jisisv le 3/10/2016 à 23:29
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
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
3 oct. 2016 à 23:26
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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