How to Dynamically Build Command and Execute - Shell Script
In Bash we can dynamically build and execute the commands. Below we can find two examples of building command stored in variable and then execute the commands to get result:
(1) eval - Build command and execute
cmd="echo Hello World!"
cmd_file="> out.txt"
eval ${cmd} ${cmd_file}
We build command: echo Hello World! > out.txt
from two variables and then execute it with eval
The result is creating a new file out.txt
and writing text: Hello World!
(2) $($cmd) - Execute command
cmd="ls -a"
res=$($cmd)
echo $res
Alternative solution is to use $($cmd)
to run a command which is stored in a variable. The result will be:
- create variable with
ls -a
command - execute the command
- print out the result
(3) Dynamically Build Command in script
#!/bin/bash
cmd="ls -a"
res=$($cmd)
echo $res
Saving the above as test.sh
. Next we can run the script by ./test.sh
.