Stations de travail en ligne OnWorks Linux et Windows

Logo

Hébergement gratuit en ligne pour les postes de travail

<Précédent | Table des matières | Suivant>

Validation de l'entrée

Avec notre nouvelle capacité d'avoir une entrée au clavier vient un défi de programmation supplémentaire, la validation de l'entrée. Très souvent, la différence entre un programme bien écrit et un programme mal écrit réside dans la capacité du programme à faire face aux imprévus. Fréquemment, l'inattendu apparaît sous la forme d'une mauvaise entrée. Nous avons fait un peu de cela avec nos programmes d'évaluation dans le chapitre précédent, où nous avons vérifié les valeurs des nombres entiers et passé au crible


des valeurs vides et des caractères non numériques. Il est important d'effectuer ces types de vérifications de programmation chaque fois qu'un programme reçoit une entrée, pour se prémunir contre les données invalides. Ceci est particulièrement important pour les programmes partagés par plusieurs utilisateurs. L'omission de ces garanties dans l'intérêt de l'économie peut être excusée si un programme doit être utilisé une seule fois par l'auteur pour effectuer une tâche particulière. Même dans ce cas, si le programme effectue des tâches dangereuses telles que la suppression de fichiers, il serait sage d'inclure la validation des données, juste au cas où.

Nous avons ici un exemple de programme qui valide différents types d'entrée :



#! / Bin / bash

# read-validate : valider l'entrée invalid_input () {

echo "Entrée invalide '$REPLY'" >&2 sortie 1

}


read -p "Entrez un seul élément > "


# entrée est vide (invalide)

[[ -z $REPLY ]] && entrée_invalide


# entrée est constituée de plusieurs éléments (invalide)

(( $(echo $REPLY | wc -w) > 1 )) && invalid_input


# l'entrée est-elle un nom de fichier valide ?

if [[ $REPLY =~ ^[-[:alnum:]\._]+$ ]] ; then echo "'$REPLY' est un nom de fichier valide."

if [[ -e $REPLY ]] ; alors

echo "Et le fichier '$REPLY' existe."

d'autre

echo "Cependant, le fichier '$REPLY' n'existe pas."

fi


# l'entrée est-elle un nombre à virgule flottante ?

if [[ $REPLY =~ ^-?[[:digit:]]*\.[[:digit:]]+$ ]] ; then echo "'$REPLY' est un nombre à virgule flottante."

d'autre

echo "'$REPLY' n'est pas un nombre à virgule flottante."

fi


# l'entrée est-elle un entier ?

if [[ $REPLY =~ ^-?[[:digit:]]+$ ]] ; then echo "'$REPLY' est un entier."

d'autre

echo "'$REPLY' n'est pas un entier."

#! / Bin / bash

# read-validate : valider l'entrée invalid_input () {

echo "Entrée invalide '$REPLY'" >&2 sortie 1

}


read -p "Entrez un seul élément > "


# entrée est vide (invalide)

[[ -z $REPLY ]] && entrée_invalide


# entrée est constituée de plusieurs éléments (invalide)

(( $(echo $REPLY | wc -w) > 1 )) && invalid_input


# l'entrée est-elle un nom de fichier valide ?

if [[ $REPLY =~ ^[-[:alnum:]\._]+$ ]] ; then echo "'$REPLY' est un nom de fichier valide."

if [[ -e $REPLY ]] ; alors

echo "Et le fichier '$REPLY' existe."

d'autre

echo "Cependant, le fichier '$REPLY' n'existe pas."

fi


# l'entrée est-elle un nombre à virgule flottante ?

if [[ $REPLY =~ ^-?[[:digit:]]*\.[[:digit:]]+$ ]] ; then echo "'$REPLY' est un nombre à virgule flottante."

d'autre

echo "'$REPLY' n'est pas un nombre à virgule flottante."

fi


# l'entrée est-elle un entier ?

if [[ $REPLY =~ ^-?[[:digit:]]+$ ]] ; then echo "'$REPLY' est un entier."

d'autre

echo "'$REPLY' n'est pas un entier."

Validation de l'entrée


fi d'autre

echo "La chaîne '$REPLY' n'est pas un nom de fichier valide."

fi

fi d'autre

echo "La chaîne '$REPLY' n'est pas un nom de fichier valide."

fi


Ce script invite l'utilisateur à saisir un élément. L'article est ensuite analysé pour déterminer son contenu. Comme nous pouvons le voir, le script utilise de nombreux concepts que nous avons couverts jusqu'à présent, y compris les fonctions shell, [[]], (( )), l'opérateur de contrôle

&&, et si, ainsi qu'une bonne dose d'expressions régulières.


Meilleur système d'exploitation Cloud Computing chez OnWorks :