Comment attribuer les résultats des commandes Linux aux variables

Pour améliorer l’efficacité lors du travail sur les systèmes Linux, maîtriser le scripting shell est essentiel. En particulier, attribuer les résultats des exécutions de commande à des variables permet d’utiliser ces résultats dans les processus suivants. Cet article discute des méthodes de base et des exemples pratiques pour le faire. Approfondissons notre compréhension et application de l’utilisation de la ligne de commande Linux à travers cette exploration.

Sommaire

Méthodes d’attribution de base

Dans Linux, pour attribuer les résultats des exécutions de commande à des variables, vous utilisez soit les guillemets inversés (`) soit la syntaxe $(). Bien que les deux méthodes soient fonctionnellement équivalentes, la syntaxe $() est recommandée pour sa lisibilité et sa facilité d’imbriquation.

Utilisation des guillemets inversés

result=`date`
echo $result

Dans le script ci-dessus, le résultat de l’exécution de la commande date est attribué à la variable result, et sa valeur est affichée en utilisant la commande echo. Cependant, les guillemets inversés peuvent être difficiles à distinguer des guillemets (ou « ), ce qui peut conduire à une confusion.

Utilisation de la syntaxe $()

result=$(date)
echo $result

Cette méthode attribue le résultat de l’exécution de la commande date à la variable result. La syntaxe $() facilite l’imbriquation plus aisée, rendant plus pratique la gestion de combinaisons plus complexes de commandes.

Maîtriser cette méthode de base d’attribution améliore considérablement l’efficacité du travail sous Linux. La section suivante fournira une explication plus détaillée de la gestion des résultats d’exécution de commandes.

Gestion des résultats d’exécution de commandes

Après avoir attribué les résultats d’exécution de commandes à une variable, vous pouvez utiliser cette variable pour effectuer diverses opérations. Ici, nous discuterons de quelques méthodes de base pour utiliser les résultats d’exécution.

Utilisation de la valeur d’une variable

La valeur attribuée à une variable peut être utilisée n’importe où dans le script en faisant référence à cette variable. Pour référencer une variable, préfixez son nom par un signe dollar ($).

# Attribuer le résultat d'une commande à une variable
file_count=$(ls | wc -l)
# Afficher la valeur de la variable
echo "Le nombre de fichiers dans le répertoire actuel est : $file_count"

Utilisation dans le branchement conditionnel

Il est également possible d’utiliser le résultat d’exécution attribué à une variable comme base pour un branchement conditionnel. Cela permet de créer des scripts qui effectuent différentes actions en fonction des résultats des commandes.

# Vérifier si un fichier spécifique existe
file_name="example.txt"
if [ -e "$file_name" ]; then
  echo "$file_name existe."
else
  echo "$file_name n'existe pas."
fi

Utilisation dans le traitement en boucle

Utiliser les résultats d’exécution de commandes attribués à une variable dans le traitement en boucle permet d’effectuer une série d’opérations sur chaque élément des résultats.

# Effectuer des opérations sur chaque fichier dans un répertoire
for file in $(ls)
do
  echo "Traitement de $file..."
  # Décrire le traitement pour chaque fichier ici
done

En attribuant les résultats d’exécution de commandes à des variables et en utilisant ces valeurs dans les scripts, il devient possible de créer des scripts shell flexibles et puissants. La section suivante développera la gestion des sorties sur plusieurs lignes.

Gestion des sorties sur plusieurs lignes

Lorsque les résultats d’exécution de commandes s’étendent sur plusieurs lignes, savoir comment gérer efficacement ces résultats est important. Les techniques pour attribuer des sorties sur plusieurs lignes à des variables et les traiter en utilisant des boucles ou des tableaux élargissent l’applicabilité des scripts.

Traitement des sorties sur plusieurs lignes avec une boucle

Lors du traitement des résultats de commande ligne par ligne, utiliser une boucle for est courant. Cependant, cette approche peut conduire à des comportements non intentionnels car chaque élément divisé par un espace blanc est traité à chaque itération de la boucle. Une méthode plus sûre pour gérer les sorties sur plusieurs lignes implique de combiner une boucle while avec la commande read.

# Traitement sûr des sorties sur plusieurs lignes dans une boucle
ls | while read line; do
  echo "Traitement du fichier : $line";
done

Dans cette méthode, la sortie de la commande ls est passée à une boucle while read en utilisant un pipe, et chaque itération de la boucle traite une ligne à la fois.

Attribution des sorties sur plusieurs lignes à un tableau

Dans le shell bash, il est également possible d’attribuer des sorties sur plusieurs lignes à un tableau, permettant ainsi un accès facile à des lignes spécifiques ou la détermination du nombre d’éléments dans le tableau.

# Attribution de la sortie d'une commande à un tableau
file_list=($(ls))
# Affichage du contenu du tableau
for file in "${file_list[@]}"; do
  echo "Fichier : $file";
done

Dans ce script, la sortie de la commande ls est attribuée au tableau file_list. Ensuite, une boucle traite chaque élément du tableau, affichant les noms de fichiers.

Gérer efficacement les sorties sur plusieurs lignes améliore considérablement la flexibilité et l’expressivité des scripts. Maîtriser ces techniques permet de créer des scripts shell plus complexes. La section suivante discutera des méthodes pour attribuer les sorties d’erreur.

Méthodes pour attribuer les sorties d’erreur

Dans le script shell Linux, il est possible d’attribuer non seulement la sortie standard des commandes mais aussi les sorties d’erreur aux variables. Gérer correctement les sorties d’erreur est crucial pour améliorer la fiabilité et l’utilisabilité des scripts.

Attribution de la sortie d’erreur standard aux variables

Pour attribuer la sortie d’erreur standard aux variables, vous devez rediriger la sortie d’erreur de la commande vers la sortie standard, puis attribuer ce résultat à une variable. Ceci est réalisé en utilisant la syntaxe 2>&1.

# Attribution de la sortie d'erreur standard à une variable
error_output=$(ls non_existing_file 2>&1)
echo $error_output

Dans cet exemple, une tentative est faite pour exécuter la commande ls sur un fichier non existant. La sortie d’erreur standard (message d’erreur) est attribuée à la variable error_output, qui est ensuite affichée.

Attribution de la sortie standard et de la sortie d’erreur standard à des variables séparées

Si vous souhaitez traiter séparément la sortie standard et la sortie d’erreur standard, vous pouvez les rediriger vers différentes variables lors de l’exécution de la commande.

# Attribution de la sortie standard et de la sortie d'erreur standard à différentes variables
{ output=$(command 2>&1 1>&3 3>&-); } 3>&1
error=$output

Cette technique est un peu complexe mais permet l’attribution indépendante de la sortie standard et de la sortie d’erreur standard à des variables, permettant un traitement séparé pour chacune.

Ignorer la sortie d’erreur

Dans certains cas, vous pouvez vouloir ignorer complètement les sorties d’erreur. Pour ignorer la sortie d’erreur, redirigez-la vers /dev/null.

# Ignorer la sortie d'erreur
output=$(command 2>/dev/null)

Dans cette commande, la sortie d’erreur est redirigée vers /dev/null, et seule la sortie standard est attribuée à la variable. Cela permet la continuation des processus sans tenir compte des messages d’erreur.

Gérer de manière appropriée les sorties d’erreur est essentiel pour améliorer la gestion des erreurs dans les scripts et construire des systèmes plus robustes. La section suivante présentera des exemples pratiques de scripts utilisant ces techniques.

Exemples pratiques de scripts

Nous présenterons quelques exemples pratiques de scripts qui démontrent comment utiliser les résultats des exécutions de commandes Linux attribués à des variables dans des scénarios réels. Ces exemples appliquent les techniques discutées précédemment, des méthodes d’attribution de base à la gestion des sorties d’erreur.

Vérification de l’utilisation du disque et avertissement si dépassement du seuil

Un script qui surveille l’utilisation du disque et émet un message d’avertissement si un certain seuil est dépassé. La commande df est utilisée pour obtenir les pourcentages d’utilisation du disque, et un branchement conditionnel est employé pour la vérification du seuil.

# Obtention du pourcentage d'utilisation du disque
disk_usage=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
alert_threshold=90

# Vérification si l'utilisation dépasse le seuil
if [ $disk_usage -gt $alert_threshold ]; then
  echo "L'utilisation du disque est au-dessus du seuil : ${disk_usage}%";
else
  echo "L'utilisation du disque est normale : ${disk_usage}%";
fi

Vérification de la réponse du serveur Web et redémarrage si non réactif

Un script qui vérifie la réponse à une URL spécifique en utilisant la commande curl et redémarre le service du serveur Web si aucune réponse n’est reçue. Ce script applique les méthodes de gestion des sorties d’erreur.

# Vérification de la réponse du serveur Web
response=$(curl -s -o /dev/null -w "%{http_code}" http://yourwebsite.com)

# Si le code de statut HTTP n'est pas 200, redémarrer le service
if [ "$response" != "200" ]; then
  echo "Pas de réponse du serveur, redémarrage du service Web.";
  systemctl restart nginx
else
  echo "Le serveur répond normalement.";
fi

Obtention d’une liste des paquets installés sur le système et sauvegarde dans un fichier

Un script qui récupère une liste des paquets installés sur le système et sauvegarde cette liste dans un fichier. Le résultat de l’exécution de la commande dpkg (utilisée dans les systèmes basés sur Debian) est attribué à une variable puis redirigé dans un fichier.

# Obtention d'une liste des paquets installés
installed_packages=$(dpkg --list | grep ^ii)

# Sauvegarde de la liste dans un fichier
echo "$installed_packages" > installed_packages_list.txt

Ces exemples de scripts servent de base pour automatiser les tâches d’administration système routinières. En attribuant les résultats d’exécution de commandes à des variables, la gestion et l’automatisation des systèmes Linux deviennent plus flexibles et efficaces.

Conclusion

Attribuer les résultats des commandes Linux à des variables est une technique puissante en script shell. Cet article a couvert tout, des méthodes d’attribution de base à la gestion des sorties sur plusieurs lignes et des sorties d’erreur, ainsi que leur application dans des exemples pratiques de scripts. En tirant parti de cette connaissance, vous pouvez rendre la gestion des systèmes Linux et la création de scripts plus flexibles et efficaces. Maîtriser la technique d’attribution des résultats d’exécution de commandes à des variables élèvera vos compétences en script shell à un niveau supérieur.

Sommaire