eval
Cette commande ordonne l'interprétation par le shell de la chaine passée en argument. On peut ainsi construire une chaine que l'appel à eval permettra d'exécuter comme une commande !
Exemple
message="Quelle est la date d'aujourd'hui ?
set $message
echo $# ---> le nombre de mots est 6
echo $4 ---> affiche la chaine "date"
eval $4 ---> interpréte la chaine "date" comme une commande, donc ...
Il est souvent pratique de construire une chaine dont la valeur sera égale au libellé d'un enchainement de commandes (par

. Pour faire exécuter ces commandes contenues dans la chaine, on la passe comme argument de la commande eval
exemple 1
liste="date;who;pwd" ( ' ' ou " " obligatoires sinon le ; est un séparateur de commandes)
eval $liste
---> exécute bien les 3 commandes
exemple 2
Soit la chaine $user qui contient des information sur un compte à créer. S'il utilise un autre séparateur que ";" on fait appel à tr d'abord
user="login=toto ; mdp=moi ; nom='Monsieur Toto' ; groupe=profs"
eval $user
echo $login $mdp $nom $groupe
useradd -G $groupe $login
echo $mdp | (passwd --stdin $login)
Partager