Eval is built in unix command – it’s used to execute arguments as shell commands. It’s useful when you have command stored in variable and you want to execute it.
[root@server Files]# mycommand="ls -ltr"
[root@server Files]# echo $mycommand
ls -ltr
[root@server Files]# eval $mycommand
total 0
-rw-r--r-- 1 root root 0 Nov 5 07:40 file1.txt
-rw-r--r-- 1 root root 0 Nov 5 07:40 file3.txt
-rw-r--r-- 1 root root 0 Nov 5 07:40 file2.txt
[root@server Files]#
Look at the example above, I have stored the command ls – ltr in the variable mycommand so when I do echo it’s just prints what in the variable. But when I do eval followed with the variable – it will actually execute the command.
Eval is powerful command but it’s Evil – it has security issues as well.
You can find the details here