使用 Go 在同一 Shell 中运行多个 Exec 命令
在 Go 的 os/exec 包中,同时执行多个命令是一个挑战。本文解决了需要在同一 shell 中顺序执行命令的特定实例。
问题描述
提供的代码尝试连续运行三个命令:
cd path; ./configure; make
但是,第二个命令 ./configure 失败,并出现“没有这样的文件或目录”错误,因为工作目录未设置。
使用 Shell 的解决方案
要在单个 shell 实例中执行命令,可以使用以下方法:
cmd := exec.Command("/bin/sh", "-c", "cd path; ./configure; make") err := cmd.Run()
此命令使用选项 -c 调用 shell (/bin/sh),该选项在 shell 中按顺序执行提供的命令。这允许 cd 更改后续命令的工作目录。
使用工作目录的解决方案
或者,如果只需要为命令设置特定目录,则可以手动设置工作目录:
config := exec.Command("./configure", "--disable-yasm") config.Dir = folderPath build := exec.Command("make") build.Dir = folderPath
通过设置命令的 Dir 字段,在命令执行之前更改工作目录执行,确保命令在正确的目录中运行。
以上是如何使用 Go 在同一 Shell 中顺序运行多个 exec 命令?的详细内容。更多信息请关注PHP中文网其他相关文章!