我想使用docker exec "$(docker-compose ps -q web)" start.sh
从golang脚本执行exec.command()
之类的命令。问题是让$()
内的命令执行。
答案 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为您执行此操作。