Bienvenue dans la deuxième partie de la série Beginners Guide To BASH, qui est unique en ce sens qu’il s’agit du seul tutoriel BASH écrit par un débutant pour les débutants.
Les lecteurs de ce guide approfondiront leurs connaissances au fur et à mesure que je développe mes connaissances et, espérons-le, à la fin, nous pourrons écrire des scripts assez astucieux.
La semaine dernière, j'ai couvert la création de votre premier script qui affiche simplement les mots "Hello World". Il couvre des sujets tels que les éditeurs de texte, comment ouvrir une fenêtre de terminal, où placer vos scripts, comment afficher les mots "Hello World" et quelques points plus précis sur les caractères d'échappement tels que les guillemets ("").
Cette semaine, je vais couvrir les paramètres d'entrée. Il y a d'autres guides qui enseignent ce genre de choses mais je trouve qu'ils sautent dans des bases assez basses et fournissent peut-être trop d'informations.
Qu'est-ce qu'un paramètre?
Dans le script "Hello World" du dernier tutoriel, tout était très statique. Le script n'a pas vraiment fait grand chose.
Comment pourrions-nous améliorer le script "Hello World"?
Qu'en est-il d'un script qui salue la personne qui l'exécute? Au lieu de dire "Hello World", il sera écrit "Hello Gary", "Hello Tim" ou "Hello Dolly".
Sans la capacité d'accepter les paramètres d'entrée, nous aurions besoin d'écrire trois scripts "hellogary.sh", "hellotim.sh" et "hellodolly.sh".
En permettant à notre script de lire les paramètres d'entrée, nous pouvons utiliser un script pour saluer n'importe qui.
Pour ce faire, ouvrez une fenêtre de terminal (CTRL + ALT + T) et accédez à votre dossier de scripts en tapant ce qui suit: (à propos de la commande cd)
scripts cd
Créez un nouveau script appelé greetme.sh en tapant ce qui suit: (about touch touch)
touchez salue.sh
Ouvrez le script dans votre éditeur favori en tapant ce qui suit: (à propos de la commande nano)
nano greetme.sh
Entrez le texte suivant dans nano:
#! / bin / bash echo "hello $ @"
Appuyez sur CTRL et O pour enregistrer le fichier, puis sur CTRL et X pour fermer le fichier.
Pour exécuter le script, entrez ce qui suit dans la ligne de commande en remplaçant par votre nom.
sh greetme.sh
Si je lance le script avec mon nom, il affiche les mots "Bonjour Gary".
La première ligne contient la ligne #! / Bin / bash utilisée pour identifier le fichier en tant que script bash.
La deuxième ligne utilise l'instruction echo pour faire écho au mot hello, suivi de l'étrange notation $ @. (à propos de la commande echo)
Le $ @ se développe pour afficher tous les paramètres entrés avec le nom du script. Donc, si vous avez tapé "sh greetme.sh tim", les mots "hello tim" seraient affichés. Si vous avez tapé "greetme.sh tim smith", les mots "hello tim smith" s'afficheraient.
Cela pourrait être bien pour le script greetme.sh de dire bonjour en utilisant seulement le prénom. Personne ne dit "Bonjour Gary Newell" quand ils me rencontrent, ils pourraient dire "Bonjour Gary".
Changeons le script pour qu'il utilise simplement le premier paramètre. Ouvrez le script greetme.sh dans nano en tapant ce qui suit:
nano greetme.sh
Changez le script pour qu'il se lise comme suit:
#! / bin / bash echo "hello $ 1"
Enregistrez le script en appuyant sur CTRL et O, puis quittez en appuyant sur CTRL et X.
Exécutez le script comme indiqué ci-dessous (remplacez mon nom par le vôtre):
sh greetme.sh gary newell
Lorsque vous exécutez le script, il indique simplement "hello gary" (ou, espérons-le, "hello" et quel que soit votre nom).
Le 1 après le symbole $ dit essentiellement à la commande echo, utilisez le premier paramètre. Si vous remplacez le $ 1 par un $ 2, le message "hello newell" (ou quel que soit votre nom de famille) s'affichera.
Incidemment, si vous remplaciez le $ 2 par un $ 3 et exécutiez le script avec seulement 2 paramètres, le résultat serait simplement "Hello".
Il est possible d'afficher et de gérer le nombre de paramètres réellement entrés. Dans des tutoriels ultérieurs, je montrerai comment utiliser le nombre de paramètres à des fins de validation.
Pour afficher le nombre de paramètres entrés, ouvrez le script greetme.sh (nano greetme.sh) et modifiez le texte comme suit:
#! / bin / bash echo "vous avez entré $ # noms" echo "hello $ @"
Appuyez sur CTRL et O pour enregistrer le script, puis sur CTRL et X pour quitter nano.
Le $ # de la deuxième ligne indique le nombre de paramètres entrés.
Jusqu'à présent, tout cela était nouveau mais pas très utile. Qui a besoin d'un script qui affiche simplement "bonjour"?
L’utilisation réelle des instructions echo est de fournir à l’utilisateur une sortie détaillée et explicite. Si vous pouvez imaginer que vous souhaitiez effectuer quelque chose de compliqué impliquant des opérations sérieuses de calcul et de manipulation des fichiers / dossiers, il serait utile de montrer à l'utilisateur ce qui se passe à chaque étape du processus.
En revanche, les paramètres d'entrée rendent votre script interactif. Sans paramètres d'entrée, vous auriez besoin de dizaines de scripts faisant tous des choses très similaires mais avec des noms légèrement différents.
Avec tout cela à l'esprit, il est utile de connaître certains paramètres d'entrée utiles et je les inclurai tous dans un extrait de code.
Ouvrez votre script greetme.sh et modifiez-le comme suit:
#! / bin / bash echo "Nom du fichier: $ 0" echo "ID du processus: $$" echo "---------------------------- --- "echo" vous avez entré $ # noms "echo" hello $ @ "
Appuyez sur CTRL et O pour enregistrer le fichier, puis sur CTRL et X pour quitter.
Maintenant, lancez le script (remplacez-le par votre nom).
sh greetme.sh
Cette fois, le script affiche les éléments suivants:
Nom de fichier: greetme.sh ID du processus: 18595 ------------------------------ vous avez entré 2 noms hello gary newell
Le $ 0 sur la première ligne du script affiche le nom du script que vous exécutez.Notez qu'il s'agit d'un dollar zéro et non d'un dollar o.
La $$ sur la deuxième ligne affiche l'ID de processus du script que vous exécutez. Pourquoi est-ce utile? Si vous exécutez un script au premier plan, vous pouvez l’annuler en appuyant simplement sur CTRL et C. Si vous exécutiez le script en arrière-plan et que celui-ci commençait à répéter en boucle la même opération ou à causer des dommages à votre système, il vous faudrait pour le tuer.
Pour tuer un script exécuté en arrière-plan, vous avez besoin de l'ID de processus du script. Ne serait-il pas bon que le script donne l'identifiant du processus dans sa sortie? (à propos des commandes ps et kill)
Enfin, avant de terminer avec ce sujet, je voulais discuter de l’emplacement de la sortie. Chaque fois que le script a été exécuté jusqu'à présent, la sortie a été affichée à l'écran.
Il est assez courant que la sortie du script soit écrite dans un fichier de sortie. Pour ce faire, exécutez votre script comme suit:
sh greetme.sh gary> greetme.log
Le symbole> dans la commande ci-dessus renvoie le texte "hello gary" dans un fichier appelé greetme.log.
Chaque fois que vous exécutez le script avec le symbole>, il écrase le contenu du fichier de sortie. Si vous préférez ajouter au fichier, remplacez le> par >>.
Résumé
Vous devriez maintenant pouvoir écrire du texte à l'écran et accepter les paramètres de saisie.