Passer les arguments et accepter les entrĂ©es de l’utilisateur

Disputons-nous… avec vos scripts bash đ
Vous pouvez rendre votre script bash plus utile et interactif en lui passant des variables.
Laissez-moi vous montrer cela en détail avec des exemples.
Contents
Passer des arguments Ă un script shell
Lorsque vous exécutez un script shell, vous pouvez lui ajouter des variables supplémentaires de la maniÚre suivante :
./my_script.sh var1 var2
Dans le script, vous pouvez utiliser $1 pour le 1er argument, $2 pour le 2Ăšme argument et ainsi de suite.
đĄ
$0 est une variable spĂ©ciale qui contient le nom du script en cours d’exĂ©cution.
Voyons cela avec un exemple concret. Basculez vers le rĂ©pertoire oĂč vous conservez vos scripts bash d’entraĂźnement.
mkdir -p bash_scripts && cd bash_scripts
Maintenant, créez un nouveau script shell nommé arguments.sh
(Je ne pouvais pas penser à de meilleurs noms) et ajoutez-y les lignes suivantes :
#!/bin/bash
echo "Script name is: $0"
echo "First argument is: $1"
echo "Second argument is: $2"
Enregistrez le fichier et rendez-le exĂ©cutable. Maintenant, exĂ©cutez le script comme vous le faites toujours, mais cette fois, ajoutez-y deux chaĂźnes. Vous verrez les dĂ©tails imprimĂ©s Ă l’Ă©cran.

đĄ
Les arguments sont séparés par un espace blanc (espace, tabulation). Si vous avez un argument avec un espace, utilisez des guillemets autour sinon il sera compté comme des arguments séparés.
Comme vous pouvez le voir, le $0 reprĂ©sente le nom du script tandis que le reste des arguments sont stockĂ©s dans les variables numĂ©rotĂ©es. Il existe d’autres variables spĂ©ciales que vous pouvez utiliser dans vos scripts.
Variable spéciale | Description |
---|---|
0 $ | Nom du script |
1 $, 2 $… n $ | Arguments de script |
$# | Nombre d’arguments |
[email protected] | Tous les arguments ensemble |
$$ | ID de processus du shell actuel |
$ ! | ID de processus de la derniÚre commande exécutée |
$ ? | Ătat de sortie de la derniĂšre commande exĂ©cutĂ©e |
đïžââïž
Modifiez le script ci-dessus pour afficher le nombre d’arguments.
Que faire si le nombre d’arguments ne correspond pas ?
Dans l’exemple ci-dessus, vous avez fourni au script bash deux arguments et les avez utilisĂ©s dans le script.
Mais que se passe-t-il si vous fournissez un seul argument ou trois arguments ?
Faisons-le en fait.

Comme vous pouvez le voir ci-dessus, lorsque vous avez fourni plus d’arguments que prĂ©vu, les choses Ă©taient toujours les mĂȘmes. Les arguments supplĂ©mentaires ne sont pas utilisĂ©s, ils ne crĂ©ent donc pas de problĂšmes.
Cependant, lorsque vous avez fourni moins d’arguments que prĂ©vu, le script affichait un espace vide. Cela pourrait ĂȘtre problĂ©matique si une partie de votre script dĂ©pend de l’argument manquant.
Accepter les entrĂ©es de l’utilisateur et crĂ©er un script bash interactif
Vous pouvez Ă©galement crĂ©er des scripts bash qui invitent l’utilisateur Ă fournir une entrĂ©e via le clavier. Cela rend vos scripts interactifs.
La commande de lecture fournit cette fonctionnalitĂ©. Vous pouvez l’utiliser comme ceci :
echo "Enter something"
read var
La commande echo ci-dessus n’est pas requise, mais l’utilisateur final ne saura pas qu’il doit fournir une entrĂ©e. Et puis tout ce que l’utilisateur entre avant d’appuyer sur la touche retour (entrĂ©e) est stockĂ© dans var
variable.
Vous pouvez Ă©galement afficher un message d’invite et obtenir la valeur sur une seule ligne comme ceci :
read -p "Enter something? " var
Voyons-le en action. Créer un nouveau interactive.sh
script shell avec le contenu suivant :
#!/bin/bash
echo "What is your name, stranger?"
read name
read -p "What's your full name, $name? " full_name
echo "Welcome, $full_name"
Dans l’exemple ci-dessus, j’ai utilisĂ© le name
variable pour obtenir le nom. Et puis j’utilise le name
variable dans l’invite et obtenir l’entrĂ©e de l’utilisateur dans full_name
variable. J’ai utilisĂ© les deux façons d’utiliser la commande de lecture.
Maintenant, si vous donnez l’autorisation d’exĂ©cution, puis exĂ©cutez ce script, vous remarquerez que le script affiche What is your name, stranger?
puis attend que vous saisissiez quelque chose Ă partir du clavier. Vous fournissez une entrĂ©e, puis elle s’affiche What's your full name
type de message et attend Ă nouveau l’entrĂ©e.
Voici un exemple de sortie pour votre référence :

đïž Temps d’exercice
Il est temps de mettre en pratique ce que vous avez appris. Essayez d’Ă©crire des scripts bash simples pour les scĂ©narios suivants.
Exercice 1: Ă©crivez un script qui prend trois arguments. Vous devez faire en sorte que le script affiche les arguments dans l’ordre inverse.
Production attendue:
[email protected]:~/bash_scripts$ ./reverse.sh ubuntu fedora arch
Arguments in reverse order:
arch fedora ubuntu
Exercice 2: Ă©crivez un script qui affiche le nombre d’arguments qui lui sont passĂ©s.
Indice: Utiliser la variable spéciale $#
Production attendue:
[email protected]:~/bash_scripts$ ./arguments.sh one and two and three
Total number of arguments: 5
Exercice 3: écrivez un script qui prend un nom de fichier comme argument et affiche son numéro de ligne.
Indice: Utilisez la commande wc pour compter les numéros de ligne.
Vous pouvez discuter de votre solution dans la communauté.
Exercice pratique dans la sĂ©rie 3 des bases de Bash : passer des arguments et accepter les entrĂ©es de l’utilisateur
Si vous suivez la sĂ©rie Bash Basics sur It’s FOSS, vous pouvez soumettre et discuter des rĂ©ponses Ă l’exercice Ă la fin du chapitre : Les autres membres expĂ©rimentĂ©s sont encouragĂ©s Ă faire part de leurs commentaires aux nouveaux membres. Notez qu’il peut y avoir plus d’une rĂ©ponse Ă un problĂšme donnĂ©.

Super! Alors maintenant, vous pouvez (passer) l’argument đ Dans le chapitre suivant, vous apprendrez Ă effectuer des mathĂ©matiques de base en bash.