如何在Golang中将带有$()的命令传递给exec.command()

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.

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.