Comment créer un script Shell sous Linux

Comment créer un script Shell sous Linux

Shell est une interface du système d'exploitation. Il accepte les commandes des utilisateurs et les interprète au système d'exploitation. Si vous souhaitez exécuter plusieurs commandes ensemble, vous pouvez le faire en créant un script shell. Les scripts Shell sont très utiles si vous devez effectuer une tâche régulièrement, comme effectuer une sauvegarde. Vous pouvez lister ces commandes et les exécuter toutes avec un seul script. Voyons comment créer un script shell et l'exécuter sous Linux.

Création d'un script Shell

Connectez-vous à votre machine Linux et ouvrez le terminal, accédez au dossier dans lequel vous souhaitez stocker le script shell. Les scripts Shell se terminent par l'extension .sh. Créons notre premier script shell. Tapez

touch script.sh 

Maintenant, ce fichier script n'est pas exécutable par défaut, nous devons donner l'autorisation exécutable à ce fichier. Tapez

chmod +x script.sh 

Maintenant, nous allons ajouter quelques commandes à ce script shell. Ouvrez ce script shell avec n'importe quel éditeur de texte de votre choix (basé sur une ligne de commande ou basé sur une interface graphique) et ajoutez quelques commandes. Nous utiliserons nano. Tapez

nano script.sh 

Ajoutez les commandes suivantes pour tester ce script shell

echo This is my first shell script touch testfile ls echo End of my shell script 

Enregistrez les modifications et exécutez le script shell en tapant

./script.sh 

Capture d'écran des étapes ci-dessus

Vous pouvez voir qu'il a exécuté toutes les commandes spécifiées.

Commentaires dans le script shell

Toute ligne commençant par # dans le script shell est traitée comme un commentaire et est ignorée par le shell lors de l'exécution, à l'exception de la ligne shebang, que nous verrons plus loin dans cet article. Voyons un exemple. Un script shell est créé avec le contenu suivant.

# This is a comment echo Testing comments in shell script 

Commentaires dans le script Shell

Vous pouvez voir que le commentaire est ignoré.

Variables dans le script Shell

Oui, les scripts Shell prennent en charge l'utilisation de variables et nous n'avons pas besoin de définir le type d'une variable lors de sa déclaration. Il existe deux types de variables :

  • Variables définies par le système
  • Variables définies par l'utilisateur.

Les variables définies par le système, également appelées variables d'environnement, sont généralement en majuscules. Vous pouvez afficher toutes les variables d'environnement actuelles à l'aide de la commande printenv. Les variables définies par l'utilisateur sont définies par l'utilisateur et n'existent que pendant l'exécution du script. Vous pouvez définir une variable en tapant simplement son nom et en attribuant une valeur avec le signe = et accéder à une variable en ajoutant un $ avant le nom de la variable. Les variables sont illustrées dans l'exemple de script suivant.

# Accessing an Environment Variable echo $USER # Creating and accessing User defined Variable variable_name='Geeksforgeeks' echo $variable_name 

Variables dans le script Shell

Définition de l'interpréteur Shell Script

Il existe de nombreux Shells disponibles sous Linux, tels que The bourne shell(sh), The Korn Shell(ksh) et GNU Bourne-Again Shell(bash). Les scripts écrits pour le shell sh sont appelés scripts shell et peuvent être interprétés par les shells ksh et bash. ksh et Bash sont des versions améliorées du shell sh original et ils ont plus de fonctionnalités que sh. Bash est généralement le shell par défaut dans la plupart des distributions Linux et les scripts écrits spécifiquement pour le shell bash sont appelés scripts bash.

Vous pouvez spécifier quel shell le script utilisera, même si le script est exécuté à partir d'un autre terminal shell. Pour ce faire, ajoutez #! en haut du fichier de script, suivi du chemin absolu du shell de votre choix. Pour spécifier bash comme interpréteur, ajoutez la ligne suivante au-dessus du script shell.

#!/bin/bash 

Cette ligne s’appelle la ligne shebang.

Note: Cela ne fonctionnera que si bash est installé sur votre système.

Opérateurs de comparaison

Vous pouvez comparer deux variables dans les scripts shell. Nous effectuons ces comparaisons pour prendre des décisions, nous verrons comment faire cela plus loin dans cet article, mais avant cela, voici une liste de quelques opérateurs de comparaison.

Comparaison entière

Opérateur Description
-eq est égal à
- est n'est pas égal à
-gt est supérieur à
-ge est supérieur ou égal à
-lt est inférieur à
-le est inférieur ou égal à

Comparaison de chaînes

Opérateur Description
== est égal à
!= n'est pas égal à
< est inférieur à, par ordre alphabétique ASCII
> est supérieur à, par ordre alphabétique ASCII

Nous ajoutons un avant car ils doivent être échappés lorsqu'ils sont tapés dans la construction [ ]. Voyons maintenant où ils sont utilisés.

Expressions conditionnelles

Les instructions conditionnelles sont utilisées pour exécuter un bloc de code uniquement lorsque certaines conditions sont remplies. Les scripts Shell prennent en charge l'utilisation d'instructions conditionnelles. Nous utilisons des opérateurs de comparaison pour vérifier les conditions. Voyons quelques instructions conditionnelles.

Si déclaration

Il vérifie la condition et si elle est vraie, il exécute les commandes.

Syntaxe

if [ condition ] then #statements fi 

Voyons un exemple.

#!/bin/sh x=10 y=11 if [ $x -ne $y ] then echo 'Not equal' fi 

Déclaration .if

Déclaration si-sinon

Dans une instruction if-else, vous pouvez spécifier un ensemble de commandes à exécuter si la condition n'est pas remplie.

Syntaxe

if [ condition ] then #set of statements if the condition is true else #set of statements if the condition is false fi 

Voyons un exemple

#!/Syntaxbin/sh x=10 y=10 if [ $x -ne $y ] then echo 'Not equal' else echo 'They are equal' fi 

Déclaration .if-else

Il existe d'autres instructions conditionnelles, vous pouvez les lire ici .

Note: Tapez un espace après [ et avant ] en précisant la condition à vérifier sinon vous obtiendrez une erreur.

Boucles

À l'aide de boucles, vous pouvez exécuter un ensemble de commandes encore et encore, jusqu'à ce qu'une certaine condition soit remplie. Voyons quelques-unes des boucles.

Boucle while

Il commence à exécuter les commandes spécifiées si la condition est vraie et les répète jusqu'à ce que la condition soit fausse.

Syntaxe

while [ condition ] do #set of statements done 

Voyons un exemple.

#!/bin/sh x=2 while [ $x -lt 6 ] do echo $x x=`expr $x + 1` done 

Boucle while

Nous enfermons une instruction expr dans ` ` lorsque nous l'attribuons à une variable. Vous pouvez en savoir plus sur la commande expr ici.

Pour la boucle

Dans une boucle for, la variable parcourt une liste de valeurs et se termine lorsqu'il n'y a plus de valeurs sur lesquelles parcourir.

Syntaxe

for var in val1 val2 val3 do #statements done 

Voyons un exemple.

#!/bin/sh for var in 2 4 5 8 do echo $var done 

pour la boucle

Vous pouvez en savoir plus sur les boucles en détail ici .

Arguments de position

Les arguments positionnels sont les arguments ou les valeurs que nous transmettons au script shell lors de l'exécution du script. On y accède par les variables $0, $1, $2… $9. Au-delà, ils sont référencés par ${10}, ${11} et ainsi de suite. $# stocke le nombre d'arguments passés et $0 stocke le nom du script. Voyons un exemple pour comprendre tout cela.

#!/bin/sh echo 'No of arguments is $#' echo 'Name of the script is $0' echo 'First argument is $1' echo 'Second argument is $2' 

Pour transmettre les arguments, tapez-les simplement dans le terminal après le nom du script, comme indiqué ci-dessous.

Arguments de position

Stockage de la sortie des commandes

Vous pouvez stocker la sortie des commandes dans une variable dans un script shell. Il existe deux manières de procéder.

Syntaxe

#Syntax 1 var=$(a valid linux command) #Syntax 2 var2=`a valid linux command` 

Voyons un exemple.

#!/bin/sh b=$(pwd) c=`pwd` echo $b echo $c d=$(ls /bin | grep bash) echo $d 

Stockage de la sortie des commandes

Codes de sortie des commandes shell

Chaque fois qu'une commande se termine et renvoie le contrôle au processus parent, elle renvoie des codes de sortie compris entre 0 et 255. Le code de sortie 0 signifie que la commande a réussi, et tout autre code de sortie signifie que la commande a échoué. Vous pouvez afficher le code de sortie après avoir exécuté une commande en accédant au $? variable. Voir l'exemple ci-dessous.

code de sortie de la commande shell

Vous pouvez définir manuellement un code de sortie pour votre script shell. Cela peut être utilisé avec des instructions conditionnelles pour indiquer si l’objectif du script a été atteint ou non.

Exemple

#!/bin/sh read x if [ $x -ne 10 ] then echo failed exit 1 else echo passed exit 0 fi 

code de sortie de la commande shell