dongyun6835
dongyun6835
2016-02-03 21:23
浏览 101
已采纳

如何在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.

图片转代码服务由CSDN问答提供 功能建议

我想执行类似 docker exec“ $(docker-compose ps -q web)”的命令 使用 exec.command()从golang脚本中启动start.sh 。 问题是要在 $()内部执行命令。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doupaimo8288
    doupaimo8288 2016-02-03 21:56
    已采纳

    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.

    点赞 评论

相关推荐