L’acquisition de saisies clavier et l’exécution d’opérations arithmétiques dans les scripts Shell, une compétence cruciale dans le domaine de l’administration système et du développement de logiciels, offre une polyvalence substantielle aux scripteurs Shell. L’utilisation des scripts Shell, souvent dans un environnement Unix ou Linux, permet d’automatiser diverses tâches, d’interagir avec l’utilisateur et d’effectuer des calculs. L’incorporation de la saisie clavier et des opérations arithmétiques élargit davantage la portée de ces scripts.
La récupération d’entrées clavier dans un script Shell peut se faire en utilisant la commande read
. Cette commande permet de stocker la saisie utilisateur dans une variable pour une utilisation ultérieure. Par exemple, pour demander à l’utilisateur de saisir son nom et stocker la saisie dans une variable, on pourrait utiliser le code suivant :

bashecho "Veuillez saisir votre nom :"
read nom
echo "Bienvenue, $nom !"
Dans cet exemple, la commande read
permet à l’utilisateur d’entrer son nom, qui est ensuite stocké dans la variable nom
. Ensuite, le script affiche un message de bienvenue en utilisant la valeur stockée dans la variable nom
.
En ce qui concerne les opérations arithmétiques, le langage Shell offre diverses méthodes pour effectuer des calculs. L’une des approches courantes est l’utilisation de la commande expr
. Par exemple, pour effectuer une addition simple :
basha=5
b=3
resultat=`expr $a + $b`
echo "La somme de $a et $b est : $resultat"
Dans ce cas, le script stocke le résultat de l’addition de deux variables dans la variable resultat
et l’affiche ensuite à l’utilisateur.
Une autre méthode populaire pour les opérations arithmétiques consiste à utiliser les crochets doubles (( ))
pour délimiter l’expression. Reprenons l’exemple d’addition :
basha=5
b=3
resultat=$((a + b))
echo "La somme de $a et $b est : $resultat"
Les crochets doubles effectuent l’évaluation arithmétique de l’expression à l’intérieur, offrant une syntaxe plus concise.
Il est également possible d’effectuer des opérations arithmétiques directement dans une instruction echo
. Par exemple, pour afficher la multiplication de deux variables :
basha=4
b=6
echo "Le produit de $a et $b est : $((a * b))"
Cette approche permet d’intégrer directement le calcul dans la chaîne de caractères qui sera affichée.
L’intégration de ces concepts dans des scripts Shell plus complexes peut permettre la création d’outils interactifs et automatisés. Par exemple, un script pourrait demander à l’utilisateur de saisir deux nombres, puis effectuer une série d’opérations arithmétiques et afficher les résultats. Ce processus peut être réalisé en utilisant des structures conditionnelles, des boucles, et d’autres fonctionnalités du langage Shell pour créer des scripts plus avancés.
Il est à noter que le Shell offre également des possibilités d’interaction avec d’autres langages de programmation et de manipulation de fichiers, ce qui étend davantage les capacités des scripts. En résumé, la maîtrise de la récupération d’entrées clavier et des opérations arithmétiques dans les scripts Shell ouvre la voie à des applications variées, de l’automatisation de tâches simples à la création d’outils plus complexes et interactifs.
Plus de connaissances
Au-delà de la simple récupération d’entrées clavier et des opérations arithmétiques de base dans les scripts Shell, il convient d’explorer les nuances de ces concepts afin de tirer pleinement parti de leur potentiel dans le développement de scripts plus avancés et fonctionnels.
Récupération d’Entrées Clavier :
La commande read
offre des possibilités étendues. Elle peut être utilisée avec plusieurs options pour personnaliser l’expérience utilisateur. Par exemple, pour afficher un message d’invite et limiter la saisie à un seul caractère, on peut utiliser la syntaxe suivante :
bashread -n 1 -p "Appuyez sur une touche : " touche
echo "Vous avez appuyé sur la touche $touche."
Dans cet exemple, l’option -n 1
indique à read
de n’accepter qu’un seul caractère, et l’option -p
permet de spécifier un message d’invite.
La validation des entrées peut également être renforcée en utilisant des boucles. Par exemple, pour s’assurer que l’utilisateur saisit un nombre positif :
bashwhile true; do
read -p "Entrez un nombre positif : " nombre
if [[ $nombre -gt 0 ]]; then
break
else
echo "Veuillez saisir un nombre positif."
fi
done
echo "Vous avez saisi un nombre positif : $nombre"
Dans ce script, une boucle while
est utilisée pour continuer à demander à l’utilisateur de saisir un nombre tant que la condition spécifiée n’est pas satisfaite.
Opérations Arithmétiques Avancées :
Outre les opérations de base, le Shell offre des fonctionnalités avancées pour manipuler les nombres. Par exemple, la commande let
peut être utilisée pour effectuer des opérations arithmétiques, et elle permet également d’effectuer des opérations de décalage. Voici un exemple :
basha=5
let "a+=2"
echo "La valeur de 'a' après l'ajout : $a"
let "a*=3"
echo "La valeur de 'a' après la multiplication : $a"
let "a >>= 1"
echo "La valeur de 'a' après un décalage vers la droite : $a"
Cette approche offre une syntaxe concise pour effectuer plusieurs opérations sur une variable.
Utilisation de Fonctions dans les Scripts Shell :
La modularité peut être introduite dans les scripts Shell en utilisant des fonctions. Par exemple, la création d’une fonction pour effectuer des calculs arithmétiques réutilisables peut améliorer la lisibilité du code. Voici un exemple :
bashcalculer_somme() {
local resultat=$(( $1 + $2 ))
echo $resultat
}
# Utilisation de la fonction
a=8
b=4
somme=$(calculer_somme $a $b)
echo "La somme de $a et $b est : $somme"
L’utilisation de fonctions permet de segmenter le code en blocs logiques, facilitant ainsi la maintenance et la compréhension du script.
Manipulation des Chaînes de Caractères :
Dans certains cas, il peut être nécessaire de manipuler des chaînes de caractères en conjonction avec les entrées clavier. La commande read
peut être utilisée pour saisir une ligne entière, et l’on peut ensuite utiliser des opérations de découpage et de substitution de chaînes pour extraire des informations spécifiques.
bashread -p "Entrez votre prénom et nom : " nom_complet
prenom=${nom_complet% *}
nom=${nom_complet#* }
echo "Prénom : $prenom"
echo "Nom : $nom"
Dans cet exemple, % *
supprime tout après le dernier espace, tandis que #*
supprime tout avant le premier espace, permettant ainsi d’extraire le prénom et le nom à partir de la saisie complète de l’utilisateur.
Gestion des Erreurs et des Exceptions :
La robustesse d’un script peut être améliorée en mettant en place une gestion appropriée des erreurs et des exceptions. L’utilisation d’instructions if
conditionnelles permet de vérifier la validité des entrées ou des opérations arithmétiques et de fournir des messages d’erreur appropriés.
bashread -p "Entrez un nombre : " nombre
if ! [[ $nombre =~ ^[0-9]+$ ]]; then
echo "Erreur : Veuillez saisir un nombre entier positif."
exit 1
fi
Cette approche vérifie si la saisie de l’utilisateur correspond à un nombre entier positif avant de poursuivre l’exécution du script.
En conclusion, la combinaison de la récupération d’entrées clavier, des opérations arithmétiques, de l’utilisation de fonctions et de la manipulation des chaînes de caractères offre une puissante palette d’outils pour la création de scripts Shell sophistiqués. Ces compétences sont essentielles pour automatiser des tâches variées, interactives et complexes, contribuant ainsi à accroître l’efficacité et la flexibilité des opérations systèmes et des développements logiciels dans un environnement Unix ou Linux.