<Précédent | Table des matières | Suivant>
read - Lire les valeurs de l'entrée standard
La lire La commande intégrée est utilisée pour lire une seule ligne d'entrée standard. Cette commande peut être utilisée pour lire une entrée au clavier ou, lorsque la redirection est utilisée, une ligne de données d'un fichier. La commande a la syntaxe suivante :
lire [-Options] [variable...]
De Options est une ou plusieurs des options disponibles répertoriées ci-dessous et variable est le nom d'une ou plusieurs variables utilisées pour contenir la valeur d'entrée. Si aucun nom de variable n'est fourni, la variable shell RÉPONDRE contient la ligne de données.
En gros, lire affecte les champs de l'entrée standard aux variables spécifiées. Si nous modifions notre script d'évaluation d'entiers pour utiliser lire, ça peut ressembler à ça :
#! / Bin / bash
# read-integer : évalue la valeur d'un entier.
echo -n "Veuillez entrer un entier -> " read int
if [[ "$int" =~ ^-?[0-9]+$ ]]; alors si [ $int -eq 0 ]; alors
echo "$int vaut zéro."
d'autre
if [ $int -lt 0 ]; alors
echo "$int est négatif."
d'autre
echo "$int est positif."
fi
if [ $((int % 2)) -eq 0 ]; then echo "$int est pair."
d'autre
echo "$int est impair."
fi
fi d'autre
echo "La valeur d'entrée n'est pas un entier." >&2 sortie 1
fi
#! / Bin / bash
# read-integer : évalue la valeur d'un entier.
echo -n "Veuillez entrer un entier -> " read int
if [[ "$int" =~ ^-?[0-9]+$ ]]; alors si [ $int -eq 0 ]; alors
echo "$int vaut zéro."
d'autre
if [ $int -lt 0 ]; alors
echo "$int est négatif."
d'autre
echo "$int est positif."
fi
if [ $((int % 2)) -eq 0 ]; then echo "$int est pair."
d'autre
echo "$int est impair."
fi
fi d'autre
echo "La valeur d'entrée n'est pas un entier." >&2 sortie 1
fi
Nous utilisons echo les -n (qui supprime le retour à la ligne en sortie) pour afficher une invite, puis utilisez lire pour saisir une valeur pour la variable int. L'exécution de ce script donne ceci :
[moi@linuxbox ~]$ lecture-entier
Veuillez saisir un nombre entier -> 5
5 est positif.
5 est impair.
[moi@linuxbox ~]$ lecture-entier
Veuillez saisir un nombre entier -> 5
5 est positif.
5 est impair.
read peut affecter une entrée à plusieurs variables, comme indiqué dans ce script :
#! / Bin / bash
# read-multiple : lit plusieurs valeurs depuis le clavier echo -n "Entrez une ou plusieurs valeurs > "
lire var1 var2 var3 var4 var5
echo "var1 = '$var1'" echo "var2 = '$var2'" echo "var3 = '$var3'" echo "var4 = '$var4'" echo "var5 = '$var5'"
#! / Bin / bash
# read-multiple : lit plusieurs valeurs depuis le clavier echo -n "Entrez une ou plusieurs valeurs > "
lire var1 var2 var3 var4 var5
echo "var1 = '$var1'" echo "var2 = '$var2'" echo "var3 = '$var3'" echo "var4 = '$var4'" echo "var5 = '$var5'"
Dans ce script, nous attribuons et affichons jusqu'à cinq valeurs. Remarquez comment lire se comporte lorsqu'on lui donne différents nombres de valeurs :
[moi@linuxbox ~]$ lecture-multiple
Saisissez une ou plusieurs valeurs > abcde
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e'
[moi@linuxbox ~]$ lecture-multiple Saisissez une ou plusieurs valeurs > a var1 = 'un'
var2 = '' var3 = '' var4 = '' var5 = ''
[moi@linuxbox ~]$ lecture-multiple
Saisissez une ou plusieurs valeurs > abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
[moi@linuxbox ~]$ lecture-multiple
Saisissez une ou plusieurs valeurs > abcde
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'e'
[moi@linuxbox ~]$ lecture-multiple Saisissez une ou plusieurs valeurs > a var1 = 'un'
var2 = '' var3 = '' var4 = '' var5 = ''
[moi@linuxbox ~]$ lecture-multiple
Saisissez une ou plusieurs valeurs > abcdefg
var1 = 'a' var2 = 'b' var3 = 'c' var4 = 'd' var5 = 'efg'
If lire reçoit moins que le nombre attendu, les variables supplémentaires sont vides, tandis qu'une quantité excessive d'entrées entraîne la variable finale contenant toutes les entrées supplémentaires.
Si aucune variable n'est répertoriée après le lire commande, une variable shell, RÉPONDRE, se verra attribuer toutes les entrées :
#! / Bin / bash
# read-single : lit plusieurs valeurs dans la variable par défaut echo -n "Entrez une ou plusieurs valeurs > "
lire
echo "REPLY = '$REPLY'"
#! / Bin / bash
# read-single : lit plusieurs valeurs dans la variable par défaut echo -n "Entrez une ou plusieurs valeurs > "
lire
echo "REPLY = '$REPLY'"
L'exécution de ce script donne ceci :
[moi@linuxbox ~]$ lecture-simple
Saisissez une ou plusieurs valeurs > a B c d
REPONSE = 'abcd'
[moi@linuxbox ~]$ lecture-simple
Saisissez une ou plusieurs valeurs > a B c d
REPONSE = 'abcd'