如何将临时文件作为命令行参数传递
How to pass a tempfile as a command line parameter
我正在尝试使用临时文件,以便将临时文件作为参数传递给 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)
我正在尝试使用临时文件,以便将临时文件作为参数传递给 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)