首页 > 后端开发 > 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学习者快速成长!