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

时间:2016-02-03 21:23:09

标签: go

我想使用docker exec "$(docker-compose ps -q web)" start.sh从golang脚本执行exec.command()之类的命令。问题是让$()内的命令执行。

1 个答案:

答案 0 :(得分:4)

执行$()内部的命令,并在命令行上用shell替换它的输出(通常为bash,但可以是sh或其他)。 exec.Command直接运行程序,因此不会发生替换。这意味着您需要将该命令传递给bash,以便它解释并执行命令:

bash -c "docker exec \"$(docker-compose ps -q web)\" start.sh"

代码示例:

exec.Command("/bin/sh", "-c", "docker exec \"$(docker-compose ps -q web)\" start.sh")

或者,您可以自己运行docker-compose ps -q web,获取其输出并进行替换,而不是让bash为您执行此操作。