Commandes Linux

Commande Bash eval

Commande Bash eval
La commande 'eval' est utilisée dans bash pour exécuter des arguments comme une commande shell. Les arguments sont joints dans une chaîne et pris comme entrée pour la commande shell pour exécuter la commande. 'eval' exécute la commande dans le shell actuel. Cette commande est utile lorsqu'elle nécessite d'exécuter une commande contenant un opérateur spécial ou des mots-clés réservés. Cette commande peut être utilisée dans n'importe quel script même où le nom de la variable est inconnu jusqu'à l'exécution du script. Ce tutoriel aidera les utilisateurs de Linux à apprendre l'utilisation de cette commande.

Syntaxe:

eval [argument… ]

Ici, les arguments sont analysés et combinés dans une chaîne qui s'exécutera par le shell. 'eval' renvoie un code d'état de sortie après l'exécution de la commande. 'eval' renvoie 0 comme code d'état de sortie si aucun argument n'est fourni ou si seul l'argument null est fourni.

Exemple-1 : Exécuter la commande 'wc' en utilisant 'eval'

Supposons un fichier texte nommé "département.SMS" contient le texte suivant. Le nombre total de lignes du fichier peut être compté par la commande 'wc'.

département.SMS

CSE
EEE
ETE
ANGLAIS
BAA
PHARMACIE

La commande suivante stockera la commande 'wc' pour compter le nombre total de lignes du fichier, département.SMS à la variable, $macommande.

$ ma commande="wc -l département.SMS"

La commande 'eval' suivante exécutera la commande 'wc' et imprimera le nombre total de lignes.

$ eval $macommande

Production:

La sortie montre que département.SMS le fichier a 6 lignes.

Exemple-2 : Exécuter la commande 'expr' en utilisant 'eval'

Créez un fichier bash nommé evaltest.sh et ajoutez le script suivant. Ce script affectera deux valeurs entières dans la variable $x et $y. Les commandes 'expr' et 'echo' sont affectées à deux variables, $c1 et $c2 qui sont exécutées plus tard en utilisant la commande 'eval'.

evaltest.sh

#!/bin/bash
#Initialiser la variable x et y
x=5
y=15
#La première variable de commande est utilisée pour affecter la commande 'expr' pour ajouter les valeurs de $x et $y
c1="'expr $x + $y'"
#La deuxième variable de commande est utilisée pour affecter la commande 'echo'
c2="écho"
#'eval' calculera et affichera la somme de $x et $y en exécutant les commandes de $c1
et $c2 variables
eval $c2 $c1

Exécutez le script.

$ bash evaltest.sh

La somme de 5 et 15 est 20 qui est affiché dans la sortie.

Exemple-3 : Imprimer la valeur d'une variable affectée à une autre variable

Créez un script bash nommé evaltest2.sh avec le script suivant. Ici, une variable est utilisée pour attribuer le nom d'une autre variable qui contient une chaîne de données. La commande 'eval' imprimera la valeur de la variable qui contient le nom d'une autre variable comme contenu.

evaltest2.sh

#!/bin/bash
# Attribuez une valeur de chaîne à la variable, $str1
str1="Script Shell"
# Attribuez le nom de la variable, "str1" à la variable $str2
str2=str1
#Stocker la commande dans la variable, $command
command="écho"
# La commande 'eval' exécutera la commande 'echo' et affichera la valeur de la variable
qui contient dans une autre variable
eval $commande \$$str2

Exécutez le script.

$ bash evaltest2.sh

La valeur de la variable, $str1 est imprimée.

Il existe un autre moyen d'accéder à la valeur d'une variable dont le nom est la valeur d'une autre variable. Utilisant '!' symbole la valeur de ce type de variable est accessible. La commande suivante peut être utilisée comme alternative au script précédent et la sortie sera la même.

$ str1="Script Shell" ; str2=str1; command="écho" ; eval $commande $!str2

Exemple-4 : Créez une série de variables avec des valeurs et calculez la somme des valeurs à l'aide de la commande 'eval'

Créez un script bash nommé evaltest3.sh et ajoutez le script suivant. Ce script créera une série de variables et stockera les valeurs dans les variables à l'aide de la commande 'eval'. Les valeurs des variables seront ajoutées et stockées dans une variable nommée $sum. Ensuite, la commande 'echo' avec des valeurs de chaîne est affectée à une variable qui est utilisée dans la commande 'eval' pour imprimer la valeur de la variable $sum.

evaltest3.sh

#!/bin/bash
# Initialiser la variable $sum avec la valeur 0
somme=0
# Déclarez une boucle for qui itérera 4 fois
pour n dans 1… 4
fais
# Créer quatre variables à l'aide de la commande eval
eval x$n=$n
# Ajouter les valeurs de la variable avec $sum
somme=$(($somme+$x$n))
Fini
# Assignez la commande 'echo' avec une chaîne à une variable
command="echo 'Le résultat de la somme=""
# La commande 'eval' affiche la valeur de la somme à l'aide de variables
eval $commande $somme

Exécutez le script.

$ bash evaltest3.sh

La somme des quatre variables est, 1+2+3+4=10 qui est imprimée.

Exemple-5 : Utilisation de la commande 'eval' pour supprimer la liste des fichiers

Créez un fichier bash nommé evaltest4.sh avec le script suivant. Ce script lira trois arguments de ligne de commande en tant que noms de fichiers qui seront supprimés et stockera les valeurs des arguments dans une variable de tableau, $fn. La commande 'rm' est stockée dans une variable, $command. La boucle for est déclarée ici pour récupérer chaque nom de fichier et supprimer le fichier à l'aide de la commande 'eval' si le fichier existe.

evaltest4.sh

#!/bin/bash
#Déclarer un tableau
déclarer -A fn
# Lire trois arguments de ligne de commande et stocker dans trois index du tableau
fn[0]=$1
fn[1]=$2
fn[2]=$3
# Stocke la commande remove dans une variable
commande="rm"
# for loop itérera trois fois pour lire trois éléments de tableau
pour index en 0 1 2
fais
# Vérifiez que le fichier existe ou n'existe pas
if [[ -f $fn[$index] ]] ; ensuite
# si le fichier existe alors supprimez le fichier
eval $commande $fn[$index]
# Informer l'utilisateur que le fichier est supprimé
echo "$fn[$index] est supprimé."
Autre
#Informe l'utilisateur que le fichier n'existe pas
echo "$fn[$index] n'existe pas."
Fi
Fini

Exécutez le script.

$ bash evaltest4.sh marques.élément docx.txt produit.docx

Ici, trois noms de fichiers sont fournis au moment de l'exécution du script. La sortie montre que les marques.docx et produit.docx existe à l'emplacement actuel et les fichiers sont supprimés et, élément.txt n'existe pas à l'emplacement actuel.

Conclusion

Toute commande bash peut être exécutée par la commande 'eval' en déclarant sous forme de chaîne. La commande 'eval' est utilisée dans ce tutoriel pour exécuter différentes commandes intégrées de bash et créer une série de variables. Les utilisations de la commande 'eval' seront effacées pour les utilisateurs et ils pourront utiliser cette commande à diverses fins après avoir lu ce tutoriel.

Comment afficher le compteur FPS dans les jeux Linux
Les jeux Linux ont reçu une impulsion majeure lorsque Valve a annoncé la prise en charge de Linux pour le client Steam et leurs jeux en 2012. Depuis l...
Comment télécharger et jouer à Civilization VI de Sid Meier sur Linux
Présentation du jeu Civilization 6 est une version moderne du concept classique introduit dans la série de jeux Age of Empires. L'idée était assez sim...
Comment installer et jouer à Doom sur Linux
Introduction à Doom La série Doom est née dans les années 90 après la sortie du Doom original. Ce fut un succès instantané et à partir de ce moment-là...