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


  • FrançaisFrançais


  • 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.

    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.

    Passer des arguments au script bash

    💡

    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.

    Passer moins ou plus d'arguments au script bash

    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 :

    Script shell bash interactif

    đŸ‹ïž 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.

    Source

    La RĂ©daction

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code