GNU/Linux >> Tutoriels Linux >  >> Linux

Shell Scripting Partie 2 :Acceptation des entrées et exécution de l'arithmétique Shell

Salut! Cet article est la deuxième partie de la série de didacticiels sur les scripts shell Howtoforge. À ce stade, je suppose que vous avez lu la première partie de la série et savez comment créer un script simple et l'exécuter. Dans la deuxième partie, vous apprendrez comment accepter les entrées de l'utilisateur et les traiter via des scripts shell. Commençons !

Variables sous Linux

Tout comme les langages de programmation, le shell Linux a la capacité de stocker des données dans des variables. Une variable est un conteneur qui stocke temporairement des données qui seront traitées via un langage de programmation. Il existe deux types de variables sous Linux :les variables d'environnement et les variables shell.

Variables d'environnement

Les variables d'environnement sont les variables par défaut de Linux et sont utilisées pour transmettre des informations entre les processus du shell. Les variables d'environnement sont sensibles à la casse et doivent toujours être en majuscules pour y accéder.

Le tableau ci-dessous montre les variables d'environnement courantes dans le shell Linux :

Nom de la variable Utilisation
BASH Contient le chemin complet de l'interpréteur de commandes pour les scripts Bash
BASH_VERSION Contient la version bash de la machine actuellement utilisée
ACCUEIL Contient le chemin relatif du répertoire personnel.
LOGNAME Contient le nom du compte de l'utilisateur actuellement connecté
OSTYPE Contient une chaîne décrivant le système d'exploitation actuel de la machine utilisée
CHEMIN Contient un chemin absolu séparé par deux-points des fichiers exécutables sous Linux
PWD Contient le répertoire de travail actuel du shell
SHELL Contient le shell de ligne de commande préféré
UTILISATEUR Fonctionne comme LOGNAME. Il contient le nom du compte de l'utilisateur actuellement connecté
_ Contient le nom de la commande récemment utilisée dans le shell

Pour afficher la valeur d'une variable d'environnement, l'utilisateur doit ajouter un signe dollar ($) à la variable à laquelle accéder. Par exemple, pour afficher certaines informations système telles que le répertoire de travail actuel, l'utilisateur connecté et le type de système d'exploitation à l'aide d'écho, nous utilisons :

#!/bin/bash
echo $PWD
echo $LOGNAME
echo $OSTYPE

Le résultat est :

Pour obtenir la liste complète des variables d'environnement sous Linux, utilisez la commande env.

Modifier les valeurs des variables d'environnement

Pour assurer la flexibilité du système, ces variables d'environnement peuvent être manipulées. Pour définir une valeur pour une variable d'environnement, utilisez une expression d'affectation (signe égal).

Exemple :

#!/bin/bash
echo $USER
USER="new user"
echo $USER

Le résultat du script est :

Lorsque vous exécutez le script, dans un premier temps, le $USER dans la ligne echo $USER affiche la valeur de la variable USER. En utilisant un opérateur d'affectation (=), la variable USER change sa valeur. Cependant, si l'utilisateur affecte des valeurs inconnues à une variable d'environnement, le shell créera une autre variable shell similaire à la variable d'environnement dans le contexte local du script mais cela n'affectera pas le comportement des autres applications. Cela signifie qu'une fois notre script fermé, la variable USER conservera sa valeur par défaut.

Notez que dans notre exemple précédent, nous omettons le signe dollar ($) dans le nom de la variable lors de la manipulation des valeurs des variables d'environnement telles que la ligne USER="new user". De plus, lors de l'utilisation de l'opérateur d'affectation, il ne doit y avoir aucun espace entre le signe USER et =. L'ajout d'un espace entre eux crée une erreur.

Variables shell

Le shell permet également à l'utilisateur de déclarer des variables. Tout comme PHP, pour déclarer une variable dans des scripts shell, l'utilisateur n'a pas à se soucier de déclarer son type de données; l'interpréteur détectera automatiquement le type de données de la variable en fonction des données que l'utilisateur y stocke pendant l'exécution.

Règles de nommage des variables shell

Comme tout langage de programmation, il existe des règles pour nommer les variables shell. Voici un résumé des règles :

  1. Les noms des variables doivent commencer par une lettre ou un trait de soulignement.
  2. Il ne doit contenir que des caractères alphanumériques ou un trait de soulignement.
  3. Les variables sont sensibles à la casse, les variables path, PATH et Path sont donc différentes.

Pour prouver cette règle, nous allons créer un script simple ci-dessous :

#!/bin/bash
12abc=10
abc#*=10
_abc=10
_ABC=2
echo $12abc $abc#* $_abc $_ABC

Les lignes 2 et 3 renvoient l'erreur "command not found" car la variable 12abc commence par un caractère numérique et la variable abc#* contient des caractères illégaux. Nous avons également prouvé que _abc et _ABC sont des variables différentes et que la ligne _ABC=2 ne remplace pas la valeur de _abc.

Assigner des valeurs aux variables shell à l'aide de la commande read :

read est une commande qui permet d'accepter les entrées de l'utilisateur. La syntaxe lors de l'utilisation de la commande de lecture est :

read <variable_name>

Par exemple, nous allons créer un script qui permettra à un utilisateur de saisir ses nom et prénom et de les afficher. Pour que l'utilisateur sache quoi faire, nous affichons une invite utilisateur avec la commande echo.

#!/bin/bash
echo "Your first name: "
read fname
echo "Your last name:"
read lname 
echo "Hello $fname $lname ! I am learning how to create shell scripts."

Le résultat est :

Veuillez noter que, comme dans notre exemple précédent, nous n'avons pas besoin de déclarer une variable pour l'utiliser. L'interpréteur crée également automatiquement la variable utilisée dans la commande de lecture. Cependant, dans l'exemple, nous avons utilisé à plusieurs reprises la commande echo pour créer une invite à l'utilisateur. La commande de lecture a également la capacité de créer une invite tout en acceptant les entrées de l'utilisateur. La syntaxe d'utilisation de prompt dans la commande de lecture est :

read -p "Your prompt: " <variable_name>

Pour simplifier notre code précédent, nous pouvons reconstruire le code pour :

#!/bin/bash
read -p "Your first name: " fname
read -p "Your last name: " lname
echo "Hello $fname $lname ! I am learning how to create shell scripts"

Un autre avantage de la commande de lecture est que l'invite de commande se trouve juste après le texte et non dans la ligne ci-dessous.

La commande de lecture peut également être utilisée pour accepter les mots de passe. Contrairement aux entrées ordinaires, les mots de passe sont masqués pour assurer la sécurité. La syntaxe pour accepter un mot de passe est :

read -s -p "your prompt" <variable_name>

Effectuer des opérations arithmétiques simples à l'aide du shell

En plus d'accepter les entrées et d'afficher la sortie, le shell bash a également une option arithmétique intégrée. Le tableau ci-dessous résume les opérateurs arithmétiques intégrés du shell Bash.

Opérateur Description Syntaxe Utilisation
+ Ajout a=$((b+c)) Ajoute la valeur de b et c et la stocke dans la variable a
- Soustraction a=$((b-c)) Soustrait la valeur de c de b et la stocke dans la variable a
* Multiplication a=$((b*c)) Multiplie la valeur de b et c et la stocke dans la variable a
/ Division a=$((b/c)) Divise la valeur de b par c et la stocke dans la variable a
% Module a=$((b%c)) Effectue la division modulo de b et c et la stocke dans la variable a
++ Pré-incrémentation $((++aa)) Incrémente la valeur de la variable a immédiatement
++ Post-incrémentation $((a++)) Incrémente la valeur de la variable a et reflète les changements à la ligne suivante
-- Pré-décrémentation $((--a)) Décrémente la valeur de la variable a immédiatement
-- Post-décrémentation $((a--)) Décrémente la valeur de la variable a et reflète les changements à la ligne suivante
** Exponentiation $((a**2)) Élever la valeur de a à l'exposant de 2
+= Plus égal $((a+=b)) Ajoute la valeur de a et b et la stocke dans la variable a
-= Moins égal $((a-=b)) Soustrait la valeur de b de a et la stocke dans la variable a
*= Fois égaux $((a*=b)) Multiplie la valeur de a et b et la stocke dans la variable a
/= Barre oblique égale $((a/=b)) Divise la valeur de a par b et la stocke dans la variable a
%= Mod égal $((a%=b)) Effectuer une division modulo entre a et b et la stocker dans la variable a

Notez que chaque fois que vous exécutez une instruction arithmétique, toutes nos variables seront entourées d'un signe dollar et d'une double parenthèse. En faisant cela, l'interpréteur traite les valeurs de nos variables comme des nombres entiers. Sans cela, l'interpréteur traite les valeurs de la variable comme une chaîne. Pour avoir un exemple, consultez le script ci-dessous :

#!/bin/bash
read -p "Enter int1: " a
read -p "Enter int2: " b
echo $((a+b))
c=$a+$b
echo $c

Lorsque nous exécutons notre exemple, la ligne $((a+b)) ajoute les valeurs de l'utilisateur stockées respectivement dans les variables a et b tandis que c=$a+$b traite les variables a et b comme une chaîne.

Conclusion

Nous avons expliqué comment accepter les entrées et les stocker dans une variable et comment effectuer des opérations arithmétiques dans les scripts shell bash. Dans la prochaine partie, nous présenterons les structures de contrôle et notamment la structure de décision.

Références :

Le projet d'information Linux. (2007). Extrait le 29 avril 2015 de Linfo.org : http://www.linfo.org/

Cooper, M. (n.d.). Guide de script avancé pour Bash. Extrait le 29 avril 2015 de http://www.tldp.org/LDP/abs/html/

Variables d'environnement. (s.d.). Extrait le 29 avril 2015 de la documentation Ubuntu : https://help.ubuntu.com/community/EnvironmentVariables


Linux
  1. Tutoriel de programmation Linux C Partie 11 - Opérateurs arithmétiques, relationnels et logiques

  2. Comment définir/créer des variables d'environnement et de shell sous Linux

  3. La différence d'utilisation entre les variables shell et les variables d'environnement ?

  4. Script Shell avec fonction et paramètre comme variables ?

  5. shell différent pour les utilisateurs root et non root

Shell Scripting Partie I :Premiers pas avec les scripts bash

Shell Scripting Partie 2 :Acceptation des entrées et exécution de l'arithmétique Shell

Shell Scripting Partie 4 :Structures de contrôle de répétition

Bash Beginner Series #2 :Comprendre les variables dans les scripts shell Bash

Shell Scripting Part4 - Entrée, sortie et redirection

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