执行需要用户输入的外部命令时,有效地自动化此过程可能具有挑战性。考虑以下场景,其中外部命令等待用户名和密码的输入。
此问题的关键在于向命令的标准输入中的多个字段提供输入。一种方法是使用字节缓冲区:
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中文网其他相关文章!