当前位置: 首页 > 面试题库 >

从golang os.exec调用'go build'命令

斜宁
2023-03-14
问题内容

在我的项目中,我需要动态编写一些go代码,并需要测试代码是否有效。因此需要使用“ os.exec”功能来调用“ go build”命令。

当我在’/data/test/mycode.go’这样的临时目录中编写go代码时。而我尝试调用“开始构建”,则返回错误,例如“无此类文件或目录”。我怎样才能正确地做到这一点?谢谢大家:)

下面是一些代码

// is not work too
// goPath, err := exec.LookPath("go")

var out, stderr bytes.Buffer
cmd := exec.Command(fmt.Sprintf("%s/go build /data/test/mycode.go", goPath))
cmd.Stdout = &out
cmd.Stderr = &stderr
err = cmd.Run()

PS:但是我直接在终端中调用命令“ go build /data/test/mycode.go”。它可以工作。


问题答案:

fmt.Sprintf("%s/go build /data/test/mycode.go", goPath) string
返回内部由blanc空间分隔的单个字符串,但返回单个字符串。

os/exec.Command(name string, arg ...string) *Cmd 期待很少的争论。它本身不会分割一个字符串。



 类似资料:
  • gobuild.io 是一个提供 golang 在线编译的网站。目前已重新上线 有很多很多优秀的工具是用 golang 写出来的。不过最大的开源网站 github.com 只提供代码的托管,并不提供二进制文件的下载。该网站将代码的编译与二进制的分享结合了起来,给无数人带来了便利。 比如一个项目的地址是 github.com/beego/bee,而二进制文件的下载直接前往 gobuild.io/be

  • 问题内容: 你如何从Python脚本中调用外部命令(就像我在Unix Shell或Windows命令提示符下键入的一样)? 问题答案: 下面总结了调用外部程序的方法以及每种方法的优缺点: 将命令和参数传递到系统的外壳程序。很好,因为您实际上可以以这种方式一次运行多个命令,并设置管道和输入/输出重定向。例如: 但是,尽管这很方便,但是您必须手动处理外壳字符(例如空格等)的转义。另一方面,这也使您可以

  • 我试图调用cmd命令从Java使用进程构建器。然而,我面临的问题很少。 > 这个程序有时没有给出正确的输出。如果我使用process.destroy()方法并得到exitValue,它显示1。如果我注释掉process.destroy()方法,异常出现,进程没有退出。我猜可能是线程竞争条件。但是,没有process.waitFor()的影响。它有时仍然会产生错误的输出。我们如何测试这些情况并找出问

  • 问题内容: 我正在尝试使用重定向和管道从Java执行一些Linux命令。Java如何调用或命令? 我试图用这个: 但是它与重定向或管道不兼容。 问题答案: 在你的shell中不执行命令 尝试 代替。 编辑::我的系统上没有,所以我改用。以下为我工作

  • 检查返回值 小技巧 总是检查返回值,并给出信息返回值。 对于非管道命令,使用 $? 或直接通过一个 if 语句来检查以保持其简洁。 例如: if ! mv "${file_list}" "${dest_dir}/" ; then echo "Unable to move ${file_list} to ${dest_dir}" >&2 exit "${E_BAD_MOVE}" fi #

  • 问题内容: 我必须将一些常规代码发送给仅安装了Java的某些用户(没有常规,没有$ groovy_home等)。我正在尝试从命令行调用Groovy,但是我没有运气。这是我的蝙蝠文件: 这是我的例外: 有人有线索吗?我在\ lib目录中有’groovy-all-1.6-beta-1.jar’。 问题答案: 我认为您需要在类路径中明确列出groovy jar