Shell Scripting eval command
The eval command is a built-in command. It takes a string as its argument and evaluate it, then run the command stored in the argument. It allows using the value of a variable as a variable.
Example 1:
Look at the above snapshot, command “echo ${$User}” runs $User as a shell variable and displays its output.
But command “eval echo ${$User}” runs the parameter passed to eval. After expansion, remaining parameters are echo and ${Hello}. Hence eval command runs the command echo ${Hello}. And so the output is Mr. X
Double quotes must be used around variable and command substitution. Without the double quotes, shell may perform field splitting on different words of the variable.
Example 2:
Look at the above snapshot, we have passed a parameter (1 week ago) to the date command. This is the last week date and time displayed.
But when we set this command in a variable (lastweek) and run it, the command fails to print the date. Look down,
Look at the above snapshot, command “$lastweek” fails whereas, command “eval $lastweek” successfully runs.
(( ))
This sign is mainly used for numerical evaluation. It is a compound command.
Look at the above snapshot, single bracket ( ) gives error while double bracket (( )) successfully executes the command.