在 Go 中使用 exec.Cmd 捕获命令输出并将其保存到文件
在 Go 中,您可能会遇到需要执行 shell 命令的情况并将其标准输出捕获到文件中以供进一步处理或分析。虽然提供的代码片段尝试满足此要求,但由于缺少管理命令的标准输出 (stdout) 的步骤,它无法生成所需的输出。
为了成功捕获并保存命令的 stdout,我们可以采用更简单的方法,直接将输出文件分配给命令的 Stdout 字段。这允许命令的输出直接写入文件,而不需要额外的缓冲或复制机制。下面是代码的优化版本:
package main import ( "io" "os" "os/exec" ) func main() { // Open the output file for writing outfile, err := os.Create("./out.txt") if err != nil { panic(err) } defer outfile.Close() // Execute the command and assign its stdout to the output file cmd := exec.Command("echo", "'WHAT THE HECK IS UP'") cmd.Stdout = outfile // Execute the command err = cmd.Run() if err != nil { panic(err) } }
这段代码中,语句 cmd.Stdout = outfile 在命令的标准输出和打开的写入文件之间建立了连接,确保命令的输出直接被写入写入文件。命令执行 (cmd.Run) 后,该文件将包含捕获的命令的 stdout。
通过采用这种方法,您可以简化捕获命令输出并将其保存到文件的过程,从而无需用于复杂的缓冲和例程操作。该方法提供了一种更高效、更简化的解决方案,用于管理 Go 中使用 exec.Cmd 执行的命令的标准输出。
以上是如何有效地将 Go `exec.Cmd` 命令的输出保存到文件中?的详细内容。更多信息请关注PHP中文网其他相关文章!