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 que la commande shell exécute la commande. 'eval' exécute la commande dans le shell actuel. Cette commande est utile lorsqu'elle nécessite d'exécuter n'importe quelle 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 également 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:

Évaluer [Argument…]

Ici, les arguments sont analysés et combinés en 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 en tant que code d'état de sortie si aucun argument n'est fourni ou si un argument nul 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
BBA
PHARMACIE

La commande suivante stockera la commande «WC» pour compter les lignes de nombre total du fichier, département.SMS à la variable, $ myCommand.

$ myCommand = "WC -L Department.SMS"

La commande «EVAL» suivante exécutera la commande «WC» et imprimera le nombre total de lignes.

$ eval $ myCommand

Sortir:

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

Examplel-2: Exécutez la commande 'expr' à l'aide de 'eval'

Créer un fichier bash nommé évaluation.shot et ajouter le script suivant. Ce script attribuera deux valeurs entières dans la variable $ x et $ y. Les commandes «expr» et «echo» sont attribuées en deux variables, $ C1 et $ C2 qui sont exécutées ultérieurement en utilisant la commande `` EVAL '.

évaluation.shot

#!/ bac / bash
#Initialiser la variable x et y
x = 5
y = 15
#La première variable de commande est utilisée pour attribuer une commande 'expr' pour ajouter les valeurs de $ x et $ y
c1 = "'expr $ x + $ y'"
#La deuxième variable de commande est utilisée pour attribuer une commande «echo»
c2 = "echo"
# 'eval' calculera et imprimera la somme de $ x et $ y en exécutant les commandes de $ C1
et variables C2 $
évaluer $ C2 $ C1

Exécutez le script.

$ BASH EVALTEST.shot

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

Exemple-3: Imprimez la valeur d'une variable qui est attribuée dans une autre variable

Créer 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 en tant que contenu.

EVALTEST2.shot

#!/ bac / bash
# Attribuez une valeur de chaîne dans la variable, $ str1
str1 = "script shell"
# Attribuez le nom de la variable, «Str1» à la variable $ str2
str2 = str1
#Store la commande dans la variable, $ commande
Command = "echo"
La commande # 'eval' exécutera la commande 'echo' et imprimera la valeur de la variable
qui contient dans une autre variable
Evalue $ Command \ $ $ str2

Exécutez le script.

$ BASH EVAMTEST2.shot

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

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

$ str1 = "script shell"; str2 = str1; Command = "echo"; évaluer $ Command $ !str2

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

Créer un script bash nommé EVALTEST3.sh et ajouter 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 attribuée dans une variable utilisée dans la commande 'eval' pour imprimer la valeur de la variable $ SUM.

EVALTEST3.shot

#!/ bac / bash
# Initialiser la variable $ sum avec la valeur 0
sum = 0
# Déclarer une boucle pour itérater pendant 4 fois
pour n dans 1… 4
faire
# Créer quatre variables à l'aide de la commande EVAL
eval x $ n = $ n
# Ajouter les valeurs de la variable avec $ sum
sum = $ (($ sum + $ x $ n))
fait
# Attribuez la commande 'echo' avec une chaîne dans une variable
Command = "echo 'le résultat de la somme ='"
# # 'eval' commande Imprimer la valeur de somme en utilisant des variables
Evalue $ Command $ sum

Exécutez le script.

$ BASH EVAMTEST3.shot

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éer un fichier bash nommé EVALTEST4.sh avec le script suivant. Ce script lira trois arguments en ligne de commande comme des noms de fichiers qui seront supprimés et stockeront les valeurs d'argument dans une variable de tableau, $ fn. La commande 'rm' est stockée dans une variable, $ commande. Car Loop est déclaré ici pour récupérer chaque nom de fichier et supprimer le fichier à l'aide de la commande 'eval' si le fichier existe.

EVALTEST4.shot

#!/ bac / bash
#Declare un tableau
DÉCLARIER -Un FN
# Lisez trois arguments de ligne de commande et stockez en trois index du tableau
fn [0] = 1 $
fn [1] = 2 $
fn [2] = 3 $
# Stockez la commande Supprimer dans une variable
Command = "rm"
# For Loop itératera trois fois pour lire trois élément de tableau
pour l'index dans 0 1 2
faire
# Vérifiez que le fichier existe ou non
si [[-f $ fn [$ index]]]; alors
# Si le fichier existe, supprimez le fichier
Evalue $ Command $ 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
fait

Exécutez le script.

$ BASH EVAMTEST4.marques sh.article docx.produit txt.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 dans l'emplacement actuel et les fichiers sont supprimés et, élément.txt n'existe pas dans l'emplacement actuel.

Conclusion

Toute commande bash peut être exécutée par commande 'eval' en déclarant une 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.