logo

Bash Scripting – Introduction à Bash et aux scripts Bash

Bash est un interpréteur de ligne de commande ou Unix Shell et il est largement utilisé dans le système d'exploitation GNU/Linux. C'est écrit par Brian Jhan Fox. Il est utilisé comme shell de connexion par défaut pour la plupart des distributions Linux. Les scripts sont utilisés pour automatiser l'exécution des tâches afin que les humains n'aient pas besoin de les exécuter individuellement. Les scripts Bash sont un excellent moyen d'automatiser différents types de tâches dans un système. Les développeurs peuvent éviter d'effectuer des tâches répétitives en utilisant les scripts bash.

format de chaîne java

Les scripts Bash prennent en charge les variables, les instructions conditionnelles et les boucles, tout comme les langages de programmation. Vous trouverez ci-dessous quelques-unes des applications des scripts Bash –



Table des matières

Applications des scripts Bash :

  • Manipulation de fichiers
  • Exécuter des tâches de routine telles que l'opération de sauvegarde
  • Automatisation

Les avantages de l’utilisation des scripts Bash sont indiqués ci-dessous :

Avantages des scripts Bash :

  • C'est simple.
  • Cela aide à éviter de faire des tâches répétitives
  • Facile à utiliser
  • Les tâches fréquemment effectuées peuvent être automatisées
  • Une séquence de commandes peut être exécutée comme une seule commande.

Les inconvénients des scripts Bash sont indiqués ci-dessous :



Inconvénients des scripts Bash :

  • Toute erreur lors de l’écriture peut coûter cher.
  • Un nouveau processus lancé pour presque chaque commande shell exécutée
  • Vitesse d'exécution lente
  • Problèmes de compatibilité entre différentes plateformes

Comment écrire des scripts Bash ?

Pour écrire un script Bash, nous suivrons les étapes –

  • Tout d’abord, nous allons créer un fichier avec l’extension .sh.
  • Ensuite, nous écrirons les scripts bash qu'il contient
  • Après cela, nous lui fournirons une autorisation d’exécution.

Pour créer et écrire un fichier avec l'extension .sh, nous pouvons utiliser gedit éditeur de texte. La commande pour cela sera –

gedit scriptname.sh>

La première ligne de notre fichier de script sera –



#!/bin/bash>

Cela indiquera au système d'utiliser Bash pour l'exécution. Ensuite, nous pouvons écrire nos propres scripts.

Écrivons juste un script simple qui imprimera quelques lignes dans le terminal. Le code correspondant sera –

#!/bin/bash echo 'Hello, techcodeview.com'>

Nous allons maintenant enregistrer le fichier et lui fournir l'autorisation d'exécution. Pour ce faire, utilisez la commande suivante –

chmod +x scriptname.sh>

Ensuite, pour exécuter le script suivant, nous utiliserons la commande suivante –

./scriptname.sh>

Voici la représentation visuelle du shell du terminal après avoir exécuté les commandes ci-dessus comme suit :

Ici, le nom du fichier de script est gfg.sh.

Nous pouvons désormais également écrire des commandes plus compliquées à l'aide de scripts Bash. Voici un exemple ci-dessous dans lequel nous utilisons une instruction de condition –

Exemple de script :

#!/bin/bash Age=17 if [ '$Age' -ge 18 ]; then echo 'You can vote' else echo 'You cannot vote' fi>

Sortir:

You cannot vote>

Voici la représentation visuelle du shell du terminal après l'exécution du script ci-dessus comme suit :

De la manière ci-dessus, nous pouvons exécuter plusieurs commandes Bash en même temps.

Examinons maintenant les autres concepts importants liés aux scripts Bash.

Noms de fichiers et autorisations

Dans l'exemple ci-dessus, nous avons enregistré le fichier en utilisant gfg.sh nom et a également fourni l'autorisation d'exécution en utilisant chmod commande. Maintenant, comprenons pourquoi nous avons fait cela.

Lors de l'écriture de scripts bash, nous devons enregistrer notre fichier avec l'extension .sh, afin que le système Linux puisse l'exécuter. Lorsque nous créons pour la première fois un fichier avec l'extension .sh, il ne dispose d'aucune autorisation d'exécution et sans l'autorisation d'exécution, le script ne fonctionnera pas. Nous devrions donc lui fournir une autorisation d'exécution en utilisant le chmod commande.

Le nom de fichier d'un script bash peut être n'importe quoi mais par convention, il est recommandé d'utiliser la casse serpent ( my_bash_script.sh ) ou des traits d'union ( my-bash-script.sh ) pour nommer un fichier de script.

Variables

Nous pouvons utiliser des variables dans les scripts bash. Vous trouverez ci-dessous un exemple de programme pour comprendre l'utilisation des variables dans les scripts Bash.

Exemple de script :

Name='SATYAJIT GHOSH' Age=20 echo 'The name is $Name and Age is $Age'>

Sortie des variables :

The name is SATYAJIT GHOSH and Age is 20>

Voici donc deux variables déclarées Nom et un autre est Âge. Ces variables sont accessibles via $Name et $Age. Cela signifie que nous pouvons déclarer une variable dans un script bash en utilisant Nom de la variable=Valeur et peut y accéder en utilisant $NomVariable. Voici la représentation visuelle du shell du terminal après l'exécution du script ci-dessus comme suit :

Il existe deux types de variables présentes dans Bash Scripting. Conventionnellement, si une variable est déclarée à l'intérieur d'une fonction alors il s'agit généralement d'une variable locale et s'il est déclaré à l'extérieur alors c'est un variable globale . Dans le cas d'un script bash, ce concept est un peu différent, ici toute variable qu'elle soit écrite à l'intérieur d'une fonction ou à l'extérieur d'une fonction est par défaut une variable globale. Si nous voulons créer une variable locale, nous devons utiliser le mot-clé local.

Note: Il est recommandé de toujours utiliser une variable locale dans une fonction pour éviter toute confusion inutile.

Un exemple de la même chose est donné ci-dessous –

Exemple de script :

#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3'>

Sortie des variables locales et globales :

The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry>

Ici, dans cet exemple ci-dessus, var2 est une variable locale, donc lorsque nous y accédons à partir de la fonction, tout se passe bien, mais lorsque nous essayons d'y accéder en dehors de la fonction, cela nous donne un résultat vide dans la sortie.

D'un autre côté, contrairement aux langages de programmation, même si var3 est défini à l'intérieur d'une fonction, il agit néanmoins comme une variable globale et est accessible en dehors de la fonction. Vous trouverez ci-dessous la représentation du shell du terminal après l'exécution du script -

Entrée et sortie

Les entrées et sorties sont des concepts fondamentaux pour les scripts shell. Un script peut prendre une ou plusieurs entrées et peut également produire zéro ou plusieurs sorties. Cela peut même produire des erreurs. Comprenons cela avec un exemple –

Exemple de script :

echo 'Enter filename' read filename if [ -e $filename ] then echo '$filename is exits on the directory' cat $filename else cat>$filename echo 'Fichier créé' fi>

Sortie d'entrée et de sortie :

Première fois:

Enter filename geeks.txt Hello Geek File created>

Deuxième fois:

Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek>

Ainsi, dans cet exemple ci-dessus, la première fois, le script n'a trouvé aucun fichier portant ce nom de fichier et le bloc else est exécuté. Il a créé le fichier et mis des données dans ce fichier. Lorsque nous l'exécutons une deuxième fois avec le même nom de fichier, il trouve le fichier. Ainsi, le bloc if est exécuté et affiche le contenu du fichier. La lecture du contenu du fichier est une entrée et la première introduction de données dans le fichier est considérée comme une sortie. Ici nous avons utilisé > pour stocker le contenu dans un fichier. Le > la notation est utilisée pour rediriger sortie standard à un fichier. Par contre, on peut utiliser 2> notation pour rediriger stderr, et &> pour rediriger à la fois stdout et stderr.

Vous trouverez ci-dessous la représentation visuelle du shell du terminal après l'exécution du script suivant :

Les fonctions

En programmation, une fonction est un bloc de code qui effectue certaines tâches et peut être appelée plusieurs fois pour effectuer des tâches. L'exemple le plus simple de l'utilisation d'une fonction dans les scripts Bash peut être donné comme suit :

Exemple de script :

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction>

Sortie des fonctions :

Hello World from techcodeview.com>

L'exemple ci-dessus montre une fonction qui imprime quelque chose lorsqu'elle est appelée.

Ainsi, la syntaxe de base pour écrire des fonctions dans un script Bash sera :

Syntaxe des fonctions :

#for defining function_name(){ commands ..... } function_name # for calling>

En plus de cela, nous pouvons également avoir des fonctions avec des arguments passants et des valeurs de retour.

Prise de décision

En programmation, la prise de décision est l'un des concepts importants. Le programmeur fournit une ou plusieurs conditions pour l'exécution d'un bloc de code. Si les conditions sont remplies, ce bloc de codes est uniquement exécuté.

Deux types d'instructions de prise de décision sont utilisés dans les scripts shell. Ils sont -

1. Déclaration if-else :

L'instruction if else est une instruction conditionnelle. Il peut être utilisé pour exécuter deux codes différents selon que la condition donnée est satisfaite ou non.

Il existe quelques variétés présentes dans l'instruction if-else. Ils sont -

  • si-fi
  • si-sinon-fi
  • si-elif-sinon-fi
  • imbriqué si-sinon

La syntaxe la plus simple sera –

Syntaxe de l'instruction If-else :

if [ expression ]; then statements fi>

Exemple de script :

Name='Satyajit' if [ '$Name' = 'Satyajit' ]; then echo 'His name is Satyajit. It is true.' fi>

Résultat de l'instruction if-else :

His name is Satyajit. It is true.>

Dans l'exemple ci-dessus, lors de la vérification des conditions, le nom correspond et la condition devient vraie. Par conséquent, le bloc de code présent dans le bloc if est exécuté. Si le nom ne correspond pas, il n’y aura pas de sortie. Vous trouverez ci-dessous la représentation visuelle du shell du terminal après l'exécution du script suivant :

2. déclaration de cas :

case-sac fonctionne fondamentalement de la même manière que l'instruction switch en programmation. Parfois, si nous devons vérifier plusieurs conditions, l'utilisation des instructions if peut devenir compliquée. Dans ces moments-là, nous pouvons utiliser une déclaration case-sac. La syntaxe sera –

Syntaxe de l'instruction case-sac :

case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac>

Exemple de script :

Name='Satyajit' case '$Name' in #case 1 'Rajib') echo 'Profession : Software Engineer' ;; #case 2 'Vikas') echo 'Profession : Web Developer' ;; #case 3 'Satyajit') echo 'Profession : Technical Content Writer' ;; esac>

Résultat de la déclaration case-sac :

Profession : Technical Content Writer>

Dans l'exemple ci-dessus, l'instruction case-sac a exécuté l'instruction qui fait partie du modèle correspondant ici, le « Nom ». Vous trouverez ci-dessous la représentation visuelle du shell du terminal après l'exécution du script suivant :

Comparaisons de chaînes et numériques

La comparaison de chaînes signifie que dans les scripts shell, nous pouvons également prendre des décisions en effectuant des comparaisons au sein des chaînes. Voici un tableau descriptif avec tous les opérateurs –

Opérateur Description
== Renvoie vrai si les chaînes sont égales
!= Renvoie vrai si les chaînes ne sont pas égales
-n Renvoie vrai si la chaîne à tester n'est pas nulle
-Avec Renvoie vrai si la chaîne à tester est nulle

Les opérateurs arithmétiques sont utilisés pour vérifier les conditions arithmétiques. Comme inférieur à, supérieur à, égal à, etc. Voici un tableau descriptif avec tous les opérateurs –

Opérateur Description
-eq Égal
-ge Meilleur que ou égal
-gt Plus grand que
- le Inférieur ou égal
-lt Moins que
- est Inégal

Vous trouverez ci-dessous un exemple simple de la même chose :

Exemple de script :

if [ 10 -eq 10 ];then echo 'Equal' fi if [ 'Geeks' == 'Geeks' ]; then echo 'same' #output else echo 'not same' fi>

Sortie des comparaisons de chaînes et numériques :

Equal same>

Dans cet exemple, le premier (-eq ) est une comparaison numérique qui vérifie l'égalité. Le second ( == ) vérifie également l’égalité mais dans les chaînes. Vous trouverez ci-dessous la représentation visuelle du shell du terminal après l'exécution du script suivant :

Nous en apprendrons davantage sur ce concept dans les prochains articles.

Conclusion

Dans cet article, nous discutons des scripts Bash qui jouent un rôle essentiel dans l'automatisation des tâches au sein de l'environnement Linux. En tant qu'interpréteur de ligne de commande, Bash offre simplicité et facilité d'utilisation aux développeurs pour créer des scripts qui rationalisent les opérations de routine, manipulent des fichiers et exécutent des tâches complexes. Bien que les scripts Bash puissent améliorer la productivité en évitant les actions répétitives et en exécutant efficacement des séquences de commandes, ils comportent également des considérations telles que la gestion des autorisations, la gestion des variables et la mise en œuvre de structures de prise de décision. En maîtrisant les scripts Bash, les utilisateurs peuvent exploiter sa puissance pour optimiser leur flux de travail et améliorer les tâches d'administration système sur les plates-formes Linux.