Dynamic command evaluation
Two built-in utilities support dynamic command evaluation.
Evaluating command strings
The eval
built-in evaluates a command string. This is useful for constructing and executing commands dynamically.
For example, you can use eval
to assign a value to a variable whose name is chosen at runtime:
echo "Type a variable name:"
read -r varname
eval "$varname='Hello, world!'"
eval "echo 'The value of $varname is:' \$$varname"
Reading and executing files
The .
(dot) built-in reads and executes commands from a file. This is useful for organizing scripts and reusing code.
For example, you can use .
to source a file containing variable definitions:
# contents of vars.sh
greeting="Hello, world!"
farewell="Goodbye, world!"
# main script
. ./vars.sh
echo "$greeting"
echo "$farewell"
source
is a non-POSIX synonym for the .
built-in.