go - 如何将临时文件作为命令行参数传递

标签 go temporary-files

我正在尝试使用临时文件,以便我可以将临时文件作为参数传递给 exec 命令。

我将要使用的命令声明为

CLI_CMD := "/home/go/src/hello/abc.sh"

xmlFile, err := ioutil.TempFile("", hostIP)
command := CLI_CMD + " " + xmlFile.Name()

我最终运行命令为

cmd := exec.Command(command)
stdout, err := cmd.Output()

为了确认 abc.sh 存在,我这样做了

[prompt] ls /home/go/src/hello/abc.sh
/home/go/src/hello/abc.sh

还要确认临时文件存在,我这样做

[prompt] ls /tmp/10.166.30.47.xml187906126
/tmp/10.166.30.47.xml187906126

我可以使用 ls 命令看到这两个文件都存在于此处。我不明白为什么我会收到无法找到这些文件的错误。还有什么文件在这里找不到,.sh 文件还是临时文件

2019/03/08 17:50:31 fork/exec /home/go/src/hello/abc.sh /tmp/10.166.30.47.xml187906126: no such file or directory

我已尝试对代码进行总结,使其易于理解。

最佳答案

像这样更改您的执行部分。

cmd := exec.Command("bash","-c",command)

关于go - 如何将临时文件作为命令行参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55073262/

相关文章:

go - 为什么 tensorflow 的 go/subdirectory 不使用 Bazel rules_go 中的 go_library?

go - 如何在运行 go mod download 时强制使用特定的软件包版本?

c# - 如何使用默认浏览器打开 HTML 文件并在用户查看后将其删除?

java - 临时文件、单实例锁和进程终止 (Java)

ruby-on-rails - 从新写入的 TempFile 中读取数据不起作用? Ruby on Rails 中的 IOerror 关闭流

docker - 使用 Ambassador API 网关实现微服务

json - 包含接口(interface)列表的结构上的 UnmarshalJSON

go - 在golang中打开超时的PE文件

Ruby 临时文件#tap : What class defines this method and what is it for?

python - 如何使用 tempfile.NamedTemporaryFile()?