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
CSEEEE
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 $macommandeProduction:
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.shLa 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.shLa 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 $!str2Exemple-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.shLa 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.docxIci, 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.