猿问

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

我想docker exec "$(docker-compose ps -q web)" start.sh使用exec.command(). 问题是让里面的命令$()执行。


慕的地8271018
浏览 137回答 1
1回答

牛魔王的故事

里面的命令在$()命令行上由你的 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 为您完成。
随时随地看视频慕课网APP

相关分类

Go
我要回答