GNU/Linux >> Tutoriels Linux >  >> Linux

Shell Scripting pour les débutants - Comment écrire des scripts Bash sous Linux

Les scripts shell sont une partie importante de l'automatisation des processus sous Linux. Les scripts vous aident à écrire une séquence de commandes dans un fichier, puis à les exécuter.

Cela vous fait gagner du temps car vous n'avez pas à écrire certaines commandes encore et encore. Vous pouvez effectuer efficacement les tâches quotidiennes et même les programmer pour une exécution automatique.

Vous pouvez également définir certains scripts à exécuter au démarrage, tels que l'affichage d'un message particulier lors du lancement d'une nouvelle session ou la définition de certaines variables d'environnement.

Les applications et les utilisations des scripts sont nombreuses, alors allons-y.

Dans cet article, vous apprendrez :

  1. Qu'est-ce qu'un shell bash ?
  2. Qu'est-ce qu'un script bash et comment l'identifier ?
  3. Comment créer votre premier script bash et l'exécuter.
  4. La syntaxe de base des scripts shell.
  5. Comment voir les scripts programmés d'un système.
  6. Comment automatiser les scripts en les planifiant via des tâches cron.

La meilleure façon d'apprendre est de pratiquer. Je vous encourage fortement à suivre en utilisant Replit. Vous pouvez accéder à un shell Linux en cours d'exécution en quelques minutes.

Introduction au shell Bash

La ligne de commande Linux est fournie par un programme appelé shell. Au fil des ans, le programme shell a évolué pour répondre à diverses options.

Différents utilisateurs peuvent être configurés pour utiliser différents shells. Mais la plupart des utilisateurs préfèrent s'en tenir au shell par défaut actuel. Le shell par défaut pour de nombreuses distributions Linux est le GNU Bourne-Again Shell (bash). Bash est remplacé par Bourne shell (sh ).

Lorsque vous lancez le shell pour la première fois, il utilise un script de démarrage situé dans le .bashrc ou .bash_profile fichier qui permet de personnaliser le comportement du shell.

Lorsqu'un shell est utilisé de manière interactive, il affiche un $ lorsqu'il attend une commande de l'utilisateur. C'est ce qu'on appelle l'invite du shell.

[username@host ~]$

Si le shell s'exécute en tant que root, l'invite est remplacée par # . L'invite du shell superutilisateur ressemble à ceci :

[root@host ~]#

Bash est très puissant car il peut simplifier certaines opérations difficiles à accomplir efficacement avec une interface graphique. N'oubliez pas que la plupart des serveurs n'ont pas d'interface graphique et qu'il est préférable d'apprendre à utiliser les pouvoirs d'une interface de ligne de commande (CLI).

Qu'est-ce qu'un script bash ?

Un script bash est une série de commandes écrites dans un fichier. Ceux-ci sont lus et exécutés par le programme bash. Le programme s'exécute ligne par ligne.

Par exemple, vous pouvez naviguer vers un certain chemin, créer un dossier et générer un processus à l'intérieur à l'aide de la ligne de commande.

Vous pouvez effectuer la même séquence d'étapes en enregistrant les commandes dans un script bash et en l'exécutant. Vous pouvez exécuter le script autant de fois que vous le souhaitez.

Comment identifier un script bash ?

Extension de fichier de .sh .

Par convention de nommage, les scripts bash se terminent par un .sh . Cependant, les scripts bash peuvent fonctionner parfaitement sans le sh extension.

Les scripts commencent par un bash bang.

Les scripts sont également identifiés par un shebang . Shebang est une combinaison de bash # et bang ! suivi le chemin du shell bash. C'est la première ligne du script. Shebang dit au shell de l'exécuter via bash shell. Shebang est simplement un chemin absolu vers l'interpréteur bash.

Vous trouverez ci-dessous un exemple de déclaration shebang.

#! /bin/bash

Le chemin du programme bash peut varier. Nous verrons plus tard comment l'identifier.

Droits d'exécution

Les scripts ont des droits d'exécution pour l'utilisateur qui les exécute.

Un droit d'exécution est représenté par x . Dans l'exemple ci-dessous, mon utilisateur a le rwx (lecture, écriture, exécution) des droits sur le fichier test_script.sh

Couleur du fichier

Les scripts exécutables apparaissent dans une couleur différente du reste des fichiers et dossiers.

Dans mon cas, les scripts avec des droits d'exécution apparaissent en vert.

Comment créer votre premier script Bash

Créons un script simple dans bash qui affiche Hello World .

Créer un fichier nommé hello_world.sh

touch hello_world.sh

Trouvez le chemin vers votre shell bash.

which bash

Dans mon cas, le chemin est /usr/bin/bash et je l'inclurai dans le shebang.

Écrivez la commande.

Nous allons echo "hello world" à la console.

Notre script ressemblera à ceci :

#! usr/bin/bash
echo "Hello World"

Editez le fichier hello_world.sh à l'aide d'un éditeur de texte de votre choix et ajoutez-y les lignes ci-dessus.

Fournir des droits d'exécution à votre utilisateur.

Modifiez les permissions du fichier et autorisez l'exécution du script en utilisant la commande ci-dessous :

chmod u+x hello_world.sh

chmod modifie les droits existants d'un fichier pour un utilisateur particulier. Nous ajoutons +x à l'utilisateur u .

Exécuter le script.

Vous pouvez exécuter le script des manières suivantes :

./hello_world.sh

bash hello_world.sh .

Voici le résultat :

La syntaxe de base des scripts bash

Comme tout autre langage de programmation, les scripts bash suivent un ensemble de règles pour créer des programmes compréhensibles par l'ordinateur. Dans cette section, nous étudierons la syntaxe des scripts bash.

Comment définir des variables

Nous pouvons définir une variable en utilisant la syntaxe variable_name=value . Pour obtenir la valeur de la variable, ajoutez $ avant la variable.

#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name

Tux est aussi le nom de la mascotte de Linux, le pingouin.

Expressions arithmétiques

Vous trouverez ci-dessous les opérateurs pris en charge par bash pour les calculs mathématiques :

Opérateur Utilisation
+ ajout
- soustraction
* multiplication
/ division
** exponentiation
% module

Exécutons quelques exemples.

Les expressions numériques peuvent également être calculées et stockées dans une variable en utilisant la syntaxe ci-dessous :

var=$((expression))

Essayons un exemple.

#!/bin/bash

var=$((3+9))
echo $var

Les fractions ne sont pas correctement calculées en utilisant les méthodes ci-dessus et tronquées.

Pour les calculs décimaux , nous pouvons utiliser bc commande pour obtenir la sortie à un nombre particulier de décimales. bc (Bash Calculator) est une calculatrice en ligne de commande qui prend en charge le calcul jusqu'à un certain nombre de décimales.

echo "scale=2;22/7" | bc

scale définit le nombre de décimales requises dans la sortie.

Comment lire les entrées utilisateur

Parfois, vous aurez besoin de recueillir les entrées de l'utilisateur et d'effectuer les opérations pertinentes.

En bash, nous pouvons prendre l'entrée de l'utilisateur en utilisant le read commande.

read variable_name

Pour inviter l'utilisateur avec un message personnalisé, utilisez le -p drapeau.

read -p "Enter your age" variable_name

Exemple :

#!/bin/bash

echo "Enter a numner"
read a

echo "Enter a numner"
read b

var=$((a+b))
echo $var

Opérateurs logiques de comparaison numérique

La comparaison est utilisée pour vérifier si les instructions sont évaluées à true ou false . Nous pouvons utiliser les opérateurs ci-dessous pour comparer deux déclarations :

Fonctionnement Syntaxe Explication
Égalité num1 -eq num2 est-ce que num1 est égal à num2
Supérieur à égal à num1 -ge num2 est num1 supérieur ou égal à num2
Supérieur à num1 -gt num2 est num1 supérieur à num2
Inférieur à num1 -le num2 est num1 inférieur ou égal à num2
Moins de num1 -lt num2 est num1 inférieur à num2
Pas égal à num1 -ne num2 est-ce que num1 n'est pas égal à num2

Syntaxe :

if [ conditions ]
    then
         commands
fi

Exemple :

Comparons deux nombres et trouvons leur relation :

read x
read y

if [ $x -gt $y ]
then
echo X is greater than Y
elif [ $x -lt $y ]
then
echo X is less than Y
elif [ $x -eq $y ]
then
echo X is equal to Y
fi

Sortie :

Énoncés conditionnels (prise de décision)

Les conditions sont des expressions qui évaluent une expression booléenne (true ou false ). Pour vérifier les conditions, nous pouvons utiliser if , if-else , if-elif-else et conditions imbriquées.

La structure des instructions conditionnelles est la suivante :

  • if...then...fi déclarations
  • if...then...else...fi déclarations
  • if..elif..else..fi
  • if..then..else..if..then..fi..fi.. (Conditions imbriquées)

Syntaxe :

if [[ condition ]]
then
	statement
elif [[ condition ]]; then
	statement 
else
	do this by default
fi

Pour créer des comparaisons significatives, nous pouvons utiliser AND -a et OU -o aussi.

La déclaration ci-dessous se traduit par :Si a est supérieur à 40 et b est inférieur à 6.

if [ $a -gt 40 -a $b -lt 6 ]

Exemple :Trouvons le type de triangle en lisant les longueurs de ses côtés.

read a
read b
read c

if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERAL

elif [ $a == $b -o $b == $c -o $a == $c ]
then 
echo ISOSCELES
else
echo SCALENE

fi

Sortie :

Cas de test #1

Cas de test #2

Cas de test #3

Boucle et saut

Les boucles For vous permettent d'exécuter des instructions un certain nombre de fois.

Boucle avec des nombres :

Dans l'exemple ci-dessous, la boucle itérera 5 fois.

#!/bin/bash

for i in {1..5}
do
    echo $i
done

Boucle avec des chaînes :

Nous pouvons également parcourir les chaînes.

#!/bin/bash

for X in cyan magenta yellow  
do
	echo $X
done

Boucle While

Les boucles While vérifient une condition et bouclent jusqu'à ce que la condition reste true . Nous devons fournir une instruction de compteur qui incrémente le compteur pour contrôler l'exécution de la boucle.

Dans l'exemple ci-dessous, (( i += 1 )) est l'instruction du compteur qui incrémente la valeur de i .

Exemple :

#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
   echo "$i"
  (( i += 1 ))
done

Lecture de fichiers

Supposons que nous ayons un fichier sample_file.txt comme indiqué ci-dessous :

Nous pouvons lire le fichier ligne par ligne et imprimer la sortie à l'écran.

#!/bin/bash

LINE=1

while read -r CURRENT_LINE
	do
		echo "$LINE: $CURRENT_LINE"
    ((LINE++))
done < "sample_file.txt"

Sortie :

Comment exécuter des commandes avec des back-ticks

Si vous avez besoin d'inclure la sortie d'une commande complexe dans votre script, vous pouvez écrire la déclaration à l'intérieur des tiques arrière.

Syntaxe :

var=` commands `

Exemple :Supposons que nous voulions obtenir la sortie d'une liste de points de montage avec tmpfs en leur nom. Nous pouvons créer une déclaration comme celle-ci :df -h | grep tmpfs .

Pour l'inclure dans le script bash, nous pouvons l'entourer de back ticks.

#!/bin/bash

var=`df -h | grep tmpfs`
echo $var

Sortie :

Comment obtenir des arguments pour les scripts à partir de la ligne de commande

Il est possible de donner des arguments au script à l'exécution.

$@ représente la position des paramètres, à partir de un.

#!/bin/bash

for x in $@
do
    echo "Entered arg is $x"
done

Exécutez-le comme ceci :

./script arg1 arg2

Comment automatiser des scripts en planifiant via des tâches cron

Cron est un utilitaire de planification de tâches présent dans les systèmes de type Unix. Vous pouvez programmer des tâches pour qu'elles s'exécutent quotidiennement, hebdomadairement, mensuellement ou à une heure précise de la journée. L'automatisation sous Linux repose fortement sur les tâches cron.

Ci-dessous la syntaxe pour programmer les crons :

# Cron job example
* * * * * sh /path/to/script.sh

Ici, * représente représente minute(s) heure(s) jour(s) mois(s) jour(s) de la semaine, respectivement.

Vous trouverez ci-dessous quelques exemples de planification de tâches cron.

CALENDRIER VALEUR PLANIFIÉE
5 0 * 8 * A 00h05 en août.
5 4 * * 6 A 04h05 le dimanche.
0 22 * ​​* 1-5 À 22h00 tous les jours de la semaine du lundi au vendredi.

Vous pouvez en savoir plus sur cron en détail dans cet article de blog.

Comment vérifier les scripts existants dans un système

Utiliser crontab

crontab -l répertorie les scripts déjà programmés pour un utilisateur particulier.

Utilisation de la commande de recherche

Le find La commande aide à localiser les fichiers en fonction de certains modèles. Comme la plupart des scripts se terminent par .sh , nous pouvons utiliser le script de recherche comme ceci :

find . -type f -name "*.sh"

Où,

  • . représente le répertoire courant. Vous pouvez modifier le chemin en conséquence.
  • -type f indique que le type de fichier que nous recherchons est un fichier texte.
  • *.sh indique de faire correspondre tous les fichiers se terminant par .sh .

Si vous souhaitez en savoir plus sur la commande de recherche en détail, consultez mon autre message.

Conclusion

Dans ce didacticiel, nous avons appris les bases des scripts shell. Nous avons examiné des exemples et une syntaxe qui peuvent nous aider à écrire des programmes significatifs.

Quelle est votre chose préférée que vous avez apprise dans ce tutoriel ? Faites-le moi savoir sur Twitter !

Vous pouvez lire mes autres articles ici.

Vecteur de travail créé par macrovector - www.freepik.com


Linux
  1. Script Linux :3 tutoriels pour les boucles while dans Bash

  2. Comment analyser Json avec des scripts Shell sous Linux ?

  3. Comment tester la conformité Posix des scripts Shell ?

  4. Comment comparer des chaînes dans les scripts shell bash

  5. Comment Linux gère-t-il les scripts shell ?

Script bash :comment écrire des données dans des fichiers texte

Comment utiliser la commande Declare dans Linux Bash Shell

Comment utiliser la commande echo dans les scripts Bash sous Linux

Comment installer Linux Bash Shell sur Windows 10

Bash Scripting :comment générer et formater du texte sur le shell Linux

Comment utiliser Linux Bash Shell dans Windows 10 ?