執行需要使用者輸入的外部命令時,有效地自動化此過程可能具有挑戰性。考慮以下場景,其中外部命令等待使用者名稱和密碼的輸入。
此問題的關鍵在於向命令的標準輸入中的多個欄位提供輸入。一種方法是使用位元組緩衝區:
login := exec.Command(cmd, "login") var b bytes.Buffer b.Write([]byte(username + "\n" + pwd + "\n")) login.Stdout = os.Stdout login.Stdin = &b login.Stderr = os.Stderr
這裡,建立一個位元組緩衝區 b 並填滿使用者名稱和密碼的原始輸入值,並用換行符號分隔。然後登入指令的 Stdin 欄位連結到緩衝區。這可確保外部命令在執行時從預先填入的緩衝區中讀取輸入。
輸入緩衝區可以透過依序儲存資料來處理多行。當該命令讀取輸入時,它會逐個字元地遍歷緩衝區,將換行符視為字段分隔符號。這允許將多個輸入自動輸入到命令的標準輸入中。
透過利用位元組緩衝區並將其設定為外部命令的標準輸入,您可以有效地從在您的程式中,無需手動輸入或複雜的輸入流處理。此方法提供了一種自動輸入外部命令的便捷方法,從而簡化了程式碼庫並改進了程式流程。
以上是如何在 Go 中自動執行使用者輸入外部命令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!