Reputation: 2283
I want to execute a command like docker exec "$(docker-compose ps -q web)" start.sh
from golang script using exec.command()
. The problem is getting the command inside $()
to execute.
Upvotes: 0
Views: 1421
Reputation: 28554
The command inside of $()
is executed and replaced with its output by your shell on the command line (typically bash
but can be sh
or others). exec.Command is running the program directly, so that replacement isn't happening. This means you need to pass that command into bash so it will interpret and execute the command:
bash -c "docker exec \"$(docker-compose ps -q web)\" start.sh"
Code Example:
exec.Command("/bin/sh", "-c", "docker exec \"$(docker-compose ps -q web)\" start.sh")
Alternatively, you can run docker-compose ps -q web
yourself, get its output and do the substitution instead of having bash do it for you.
Upvotes: 4