在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中文網其他相關文章!