首页  >  文章  >  后端开发  >  如何使用 Go 在同一 Shell 中顺序运行多个 exec 命令?

如何使用 Go 在同一 Shell 中顺序运行多个 exec 命令?

Susan Sarandon
Susan Sarandon原创
2024-11-26 17:43:11926浏览

How to Run Multiple `exec` Commands Sequentially in the Same Shell Using Go?

使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn