Lire à partir d'un fichier ou d'une entrée utilisateur dans Bash

Muhammad Husnain 30 janvier 2023
  1. Le script BASH
  2. Entrée de stdin dans le script bash
  3. Entrée de fichier bash
Lire à partir d'un fichier ou d'une entrée utilisateur dans Bash

BASH est le raccourci de Bourne Again Shell, un nom intelligent qui fait référence à Bourne Shell (c’est-à-dire créé par Steven Bourne). BASH est un programme shell développé par Brian Fox comme une version mise à jour de l’application Bourne Shell sh.

Cet article traite de la fonctionnalité d’entrée dans les scripts bash et des méthodes permettant d’obtenir des entrées à partir de la console d’entrée standard et de certains fichiers spécifiques. De plus, nous passerons également en revue plusieurs exemples de scripts pour illustrer l’idée.

Le script BASH

Un fichier texte contenant une liste d’instructions que nous mettrions normalement dans la ligne de commande s’appelle Bash Shell Script. Un Bash est particulièrement utile lorsqu’une séquence de tâches doit être exécutée de manière répétitive.

Au lieu de taper la même séquence de manuel d’instructions à chaque fois, seul un fichier de script Bash pré-écrit peut être exécuté. Par conséquent, cela permet d’économiser beaucoup de travail manuel et de gagner du temps.

Un autre avantage du script Bash est ses fonctionnalités de programmation impératives. Cela signifie qu’il permet d’écrire des procédures, des instructions conditionnelles et des structures en boucle comme les langages de programmation (par exemple, C/C++, Javascript, etc.).

Bash Script est un fichier texte avec une extension .sh. Pour le créer, on utilise la commande touch avec l’extension .sh.

touch myscript.sh

Nous pouvons l’ouvrir dans n’importe quel éditeur de texte, par exemple gedit. Pour l’ouvrir, utilisez la commande suivante.

Commande:

gedit myscipt.sh

Nous utilisons la ligne #!/bin/bash pour démarrer un script shell. Dans cette ligne #! partie est connue sous le nom de shebang, et la partie restante est le chemin vers l’interpréteur bash dans le système d’exploitation.

Après cela, nous écrirons notre ensemble de commandes requis dans le script et l’enregistrerons. Pour lancer un script Bash, on utilise la commande bash.

Commande:

bash myscript.sh

Cela exécutera notre script et nous donnera la sortie des commandes utilisées dans le script.

Entrée de stdin dans le script bash

Nous pouvons également prendre l’entrée de l’utilisateur depuis le terminal ou stdin dans notre script Bash. Nous pouvons utiliser la commande intégrée Bash lire pour lire l’entrée utilisateur Bash.

Il accepte l’entrée de l’utilisateur et l’affecte à une variable. Il ne peut lire qu’une seule ligne du shell Bash.

Syntaxe:

read <variable>

Chaque mot séparé par un espace est enregistré dans une variable différente.

Exemple de script bash :

#!/bin/bash
echo "Enter your name: "
read userName
echo "Enter your age: "
read userAge;
echo "Enter your 3 Subjects: "
read sub1 sub2 sub3
echo "The user $userName is $userAge years old and is specialized in $sub1, $sub2, and $sub3. "

Dans cet exemple, nous avons pris l’entrée de l’utilisateur de son nom, de son âge et de 3 sujets. Les sujets sont enregistrés dans des variables distinctes.

Production:

lire une seule ligne du shell Bash

Donner le nom de la variable avec la commande read n’est pas obligatoire. Si nous ne spécifions pas le nom de la variable, il stocke la valeur dans la variable REPLY par défaut, afin que nous puissions l’utiliser plus tard dans notre script.

Exemple de script bash :

#!/bin/bash
echo "Enter a number from 1-10: "
read
echo "You entered: $REPLY"

Production:

stocke la valeur dans la variable REPLY par défaut

Dans les exemples précédents, nous avons utilisé 2 lignes pour prendre des entrées, une pour l’instruction d’invite et l’autre pour la commande de lecture. Ce processus peut également être effectué en une seule ligne en utilisant un drapeau -p avec la commande read.

Syntaxe:

read -p <Prompt statement> <variable_name>

Exemple de script de Bach :

#!/bin/bash
read -p "Please enter the name of the file: " fileName
echo "The filename you entered is: $fileName"

Production:

utiliser un drapeau -p avec la commande read

Dans certains cas, nous devons masquer l’entrée de l’utilisateur à l’écran pour des raisons de sécurité et de confidentialité. Par exemple, lorsque nous devons prendre un mot de passe en entrée, il ne doit pas être visible à l’écran pendant que l’utilisateur le saisit.

Pour y parvenir, nous utilisons le drapeau -s pour le rendre silencieux.

Exemple de script bash :

#!/bin/bash
read -p "Enter username: " userName
read -sp "Enter Password: " pass
echo
echo "Hello $userName"

Production:

utilisez le drapeau -s pour que la saisie du mot de passe ne soit pas visible à l&rsquo;écran

Nous pouvons également prendre une entrée dans un tableau en utilisant le drapeau -a. Avec ce drapeau, tous les mots d’une ligne seront stockés dans les différents index du tableau accessibles ultérieurement.

Exemple de script bash :

#!/bin/bash
echo "Enter names of 2 students: "
read -a stuNames
echo "The names of students are:${stuNames[0]}, ${stuNames[1]} "

Production:

prendre l&rsquo;entrée de l&rsquo;utilisateur dans un tableau en utilisant le drapeau -a

Entrée de fichier bash

Le script bash peut également prendre des entrées à partir de fichiers. La commande read est utilisée à cet effet et lit le fichier ligne par ligne. Nous allons discuter de quelques exemples de lecture de données à partir du fichier.

Nous pouvons lire à partir de fichiers en utilisant la console ainsi que le script. Tout d’abord, nous examinons la commande de la console, puis nous nous dirigeons vers le script.

Supposons que nous ayons un fichier data.txt contenant du texte comme celui-ci :

LG
Samsung
Bosch
Pel

La commande pour lire ce fichier :

while read ln; do echo $ln; done < data.txt

Production:

lire les fichiers .txt dans BASH

Nous pouvons également utiliser un script pour lire à partir du fichier.

Exemple de script bash :

#!/bin/bash
fname='data.txt'
a=1
while read ln; do
echo "Reading line $a : $ln"
a=$((a+1))
done < $fname

Production:

utiliser un script pour lire à partir du fichier

Nous pouvons également lire le nom du fichier à partir de la ligne de commande. Créez un fichier bash et placez-y le script ci-dessous.

Le nom de fichier sera extrait de la ligne de commande saisie par ce script. La variable $1, qui contiendra le nom du fichier pour la lecture, lit la valeur du premier argument.

Si le fichier existe à l’emplacement actuel, la boucle while lira le fichier ligne par ligne et imprimera le contenu, comme dans l’exemple précédent.

Exemple de script bash :

#!/bin/bash
fname=$1
while read ln; do
echo $ln
done < $fname

Pour exécuter ce script, nous utiliserons la commande suivante.

Commande:

$ bash myscript.sh data.txt

Production:

lire le nom du fichier à partir de la ligne de commande

Muhammad Husnain avatar Muhammad Husnain avatar

Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.

LinkedIn

Article connexe - Bash Input