首頁 > 後端開發 > Golang > 主體

如何以程式設計方式為 Go 中的外部命令提供多個輸入欄位?

Susan Sarandon
發布: 2024-10-28 13:43:02
原創
580 人瀏覽過

How to Programmatically Provide Multiple Input Fields to an External Command in Go?

Go 中外部命令寫入 STDIN

在 Go 中,執行外部命令時,經常需要透過 STDIN 提供輸入。本文探討了一種在處理需要多個輸入欄位的命令時將輸入寫入 STDIN 的技術。

讓我們考慮一個按順序提示輸入使用者名稱和密碼的命令,例如「登入」命令。要以程式設計方式提供這些輸入,我們需要寫入命令的 STDIN。

最初的方法是手動處理輸入字段,如以下程式碼所示:

<code class="go">login := exec.Command(cmd, "login")

login.Stdout = os.Stdout
login.Stdin = os.Stdin
login.Stderr = os.Stderr

err := login.Run()
if err != nil {
    fmt.Fprintln(os.Stderr, err)
}</code>
登入後複製

但是,此方法不允許程式輸入。解決方案在於利用 bytes.Buffer 來組裝輸入。這是改進的程式碼:

<code class="go">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</code>
登入後複製

bytes.Buffer 充當字元緩衝區。透過寫入由換行符分隔的使用者名稱和密碼,我們實質上建構了外部命令將依序讀取的輸入序列。命令的 Stdin 欄位分配了緩衝區,確保輸入被饋送到命令的進程中。

這種方法可以自動輸入具有多個輸入欄位的外部命令,簡化了 Go 與其他命令之間的互動-線條工具。

以上是如何以程式設計方式為 Go 中的外部命令提供多個輸入欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!