La création de scripts shell est l’une des compétences les plus essentielles que les utilisateurs de Linux devraient avoir au bout de leurs doigts. Les scripts shell jouent un rôle énorme dans l’automatisation des tâches répétitives qui autrement seraient fastidieuses à exécuter ligne par ligne.
Dans ce didacticiel, nous mettons en évidence certaines des opérations de script shell de base que chaque utilisateur Linux devrait avoir.
1. Créez un script Shell simple
Un script shell est un fichier qui comprend ASCII texte. Nous allons commencer par créer un simple script shell, et pour ce faire, nous utiliserons un éditeur de texte. Il existe un certain nombre de éditeurs de texte, à la fois en ligne de commande et en interface graphique. Pour ce guide, nous utiliserons le éditeur vim.
Nous allons commencer par créer un script simple qui affiche « Bonjour le monde”Lors de l’exécution.
$ vim hello.sh
Collez le contenu suivant dans le fichier et enregistrez-le.
#!/bin/bash # Print Hello world message echo "Hello World!"
Passons en revue le script shell ligne par ligne.
- La première ligne –
#!/bin/bash
– est connu sous le nom d’en-tête shebang. C’est une construction spéciale qui indique quel programme sera utilisé pour interpréter le script. Dans ce cas, ce sera le frapper coque indiquée par / bin / bash. Il existe d’autres langages de script tels que Python qui est désigné par#!/usr/bin/python3
et Perl dont l’en-tête shebang est désigné par#!/usr/bin/perl
. - La deuxième ligne est un commentaire. Un commentaire est une instruction qui décrit ce que fait un script shell et qui n’est pas exécuté lorsque le script est exécuté. Les commentaires sont toujours précédés du signe dièse
#
. - La dernière ligne est la commande qui imprime le ‘Bonjour le monde‘message sur le terminal.
L’étape suivante consiste à rendre le script exécutable en attribuant l’autorisation d’exécution à l’aide de chmod commande comme indiqué.
$ chmod +x hello.sh
Enfin, exécutez le script shell en utilisant l’une des commandes:
$ bash hello.sh OR $ ./hello.sh
2. Utilisation d’instructions conditionnelles pour exécuter du code
Comme d’autres langages de programmation, expressions conditionnelles sont utilisés dans les scripts bash pour prendre des décisions, avec seulement une légère variation dans la syntaxe. Nous allons couvrir le si, sinon, et elif expressions conditionnelles.
Exemple d’instruction if uniquement
le si L’instruction peut être utilisée pour tester des conditions uniques ou multiples. Nous commencerons par l’utilisation fondamentale du si instruction pour tester une seule condition. le si l’instruction est définie par if ... fi
blocs.
if command then statement fi
Jetons un coup d’œil au script shell ci-dessous.
#!/bin/bash echo 'Enter the score' read x if [[ $x == 70 ]]; then echo 'Good job!' fi
Le script shell ci-dessus invite l’utilisateur à fournir un score qui est ensuite stocké dans une variable X. Si le score correspond à 70, le script renvoie la sortie « Bon travail!». L’opérateur de comparaison ==
permet de tester si le score saisi, qui est stocké dans la variable X, est équivalent à 100.
Les autres opérateurs de comparaison que vous pouvez utiliser incluent:
-eq
– Égal à-ne
– Pas égal à-lt
– Moins que-le
– Inférieur ou égal à-lt
– Moins que-ge
– Plus grand ou égal à
Par exemple, le instruction if bloc ci-dessous imprime ‘Travailler plus dur‘si le score d’entrée est une valeur inférieure à 50.
if [[ $x -lt 50 ]]; then echo 'Work Harder!' fi
Exemple d’instruction if-else
Pour les situations où vous avez 2 résultats possibles: – que ce soit ceci ou cela – l’instruction if-else est pratique.
if command then statement1 else statement2 fi
Le script ci-dessous lit le score d’entrée et vérifie s’il est supérieur ou égal à 70.
Si le score est supérieur ou égal à 70, vous obtenez un ‘Excellent travail, vous avez réussi!‘ message. Cependant, si le score tombe en dessous 70, le résultat ‘Vous avez échoué‘sera imprimé.
#!/bin/bash echo 'Enter the score' read x if [[ $x -ge 70 ]]; then echo 'Great job, You passed!' else echo 'You failed' fi
Exemple d’instruction if-elif-else
Dans les scénarios où il y a plusieurs conditions et différents résultats, le if-elif-else instruction est utilisée. Cette instruction prend le format suivant.
if condition1 then statement1 elif condition2 then statement2 else statement3 fi
Par exemple, nous avons un script pour une loterie qui vérifie si le numéro entré est soit 90, 60 ou 30.
#!/bin/bash echo 'Enter the score' read x if [[ $x -eq 90 ]]; then echo “You have won the First Prize” elif [[ $x -eq 60 ]]; then echo “You have won the Second Prize” elif [[ $x -eq 30 ]]; then echo “You have won the Second Prize” else echo “Please try again” fi
3. Utilisation de l’instruction If avec la logique AND
Vous pouvez utiliser le si déclaration à côté de la ET opérateur logique pour exécuter une tâche si deux conditions sont remplies. le &&
l’opérateur est utilisé pour désigner le ET logique.
#!/bin/bash echo 'Please Enter your user_id' read user_id echo 'Please Enter your tag_no' read tag_id if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]]; then echo “Login successful” else echo “Login failure” fi
5. Utilisation de l’instruction If avec la logique OR
Lors de l’utilisation du OU logique, qui est représentée par ||
symbole, l’une ou l’autre des conditions doit être satisfaite avec le script pour donner les résultats attendus.
#!/bin/bash echo 'Please enter a random number' read number if [[ (number -eq 55 || number -eq 80) ]]; then echo 'Congratulations! You’ve won' else echo 'Sorry, try again' fi
Utiliser des constructions en boucle
Frapper boucles permettre aux utilisateurs d’effectuer une série de tâches jusqu’à ce qu’un certain résultat soit atteint. Cela est pratique pour effectuer des tâches répétitives. Dans cette section, nous allons avoir un aperçu de certaines des boucles que vous trouverez également dans d’autres langages de programmation.
Alors que la boucle
C’est l’une des boucles les plus faciles à utiliser. La syntaxe est assez simple:
while <some test> do commands done
La boucle while ci-dessous répertorie tous les nombres de 1 à 10 lors de l’exécution.
#!/bin/bash # A simple while loop counter=1 while [ $counter -le 10 ] do echo $counter ((counter++)) done
Disséquons la boucle while:
La variable compteur est initialisé à 1. Et tandis que la variable est inférieure ou égale à dix, la valeur du compteur sera incrémentée jusqu’à ce que la condition soit satisfaite. La ligne echo $ compteur imprime tous les nombres de 1 à 10.
Pour boucle
Comme le temps boucle, une pour boucle est utilisé pour exécuter du code de manière itérative. C’est-à-dire répéter l’exécution du code autant de fois que possible défini par l’utilisateur.
La syntaxe est:
for var in 1 2 3 4 5 N do command1 command2 done
le pour boucle ci-dessous itère de 1 à 10 et traite leurs valeurs à l’écran.
Une meilleure façon d’y parvenir est de définir une plage à l’aide des doubles accolades. { }
comme indiqué au lieu de taper tous les nombres.
#!/bin/bash # Specify range in a for loop for num in {1..10} do echo $num done
Paramètres de position Bash
Un paramètre de position est une variable spéciale qui est référencée dans le script lorsque des valeurs sont transmises au shell mais ne peuvent pas être affectées. Les paramètres de position partent de 0 $ 1 $ 2 $ 3 $ …… à 9 $. Au-delà de 9 $ valeur, les paramètres doivent être placés entre accolades, par exemple $ {10}, $ {11}… etc.
Lors de l’exécution du script, le premier paramètre de position qui est 0 $ prend le nom du script shell. le 1 $ paramètre prend la première variable qui est passée sur le terminal, 2 $ prend le second, 3 $ le troisième et ainsi de suite.
Créons un script test.sh comme indiqué.
#!/bin/bash echo "The name of the script is: " $0 echo "My first name is: " $1 echo "My second name is: " $2
Ensuite, exécutez le script et indiquez le premier et le deuxième nom comme arguments:
# bash test.sh James Kiarie
À partir de la sortie, nous pouvons voir que la première variable qui est imprimée est le nom du script shell, dans ce cas, test.sh. Ensuite, les noms sont imprimés en fonction des paramètres de position définis dans le script shell.
Les paramètres de position sont utiles dans la mesure où ils vous aident à personnaliser les données saisies au lieu d’attribuer explicitement une valeur à une variable.
Codes de sortie de la commande Shell
Commençons par répondre à une question simple, qu’est-ce qu’un code de sortie?
Chaque commande exécutée sur le shell par un utilisateur ou un script shell a un statut de sortie. Un état de sortie est un entier.
Un état de sortie de 0 implique que la commande a été exécutée avec succès sans aucune erreur. N’importe quoi entre 1 à 255 indique que la commande a échoué ou ne s’est pas exécutée avec succès.
Pour trouver l’état de sortie d’une commande, utilisez le $?
Variable Shell.
Un statut de sortie de 1 indique une erreur générale ou des erreurs non autorisées telles que la modification de fichiers sans autorisations sudo.
Un état de sortie de 2 indique une utilisation incorrecte d’une commande ou d’une variable shell intégrée.
L’état de sortie 127 pointe vers une commande illégale qui produit généralement le ‘commande non trouvée‘ Erreur.
Traitement de la sortie des commandes Shell dans un script
Dans les scripts bash, vous pouvez stocker la sortie d’une commande dans une variable pour une utilisation future. Ceci est également appelé substitution de commande shell et peut être réalisé des manières suivantes.
variable=$(command) OR variable=$(/path/to/command) OR variable=$(command argument 1 argument 2 ...)
Par exemple, vous pouvez stocker le Date commande dans une variable appelée aujourd’hui et appelez le script shell pour révéler la date actuelle.
#!/bin/bash today=$(date) echo “Today is $today”
Prenons un autre exemple. Supposons que vous souhaitiez trouver les utilisateurs de connexion valides sur votre système Linux. Comment procéderiez-vous? Tout d’abord, la liste de tous les utilisateurs (utilisateurs système, processus et connexion) est stockée dans le / etc / passwd fichier.
Pour afficher le fichier, vous devez utiliser le commande de chat. Cependant, pour restreindre la connexion des utilisateurs, utilisez le commande grep pour rechercher des utilisateurs avec / bin / bash attribut et utilisez le coupe -c 1-10 comme indiqué pour afficher les 10 premiers caractères des noms.
Nous avons stocké le commande de chat à la login_users variable.
#!/bin/bash login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10) echo 'This is the list of login users: echo $login_users
Cela met fin à notre didacticiel sur la création de scripts shell simples. Nous espérons que vous avez trouvé cela utile.
.