如何使用golang os\exec包,操控一个交互试命令程序?-灵析社区

PunkMaccccc

> 首先下面代码是有问题,大佬看一下代码,这个输入这里应该有问题,或者这个库不支持这样的持续交互吗? package main import ( "fmt" "io" "os/exec" "time" ) func main() { // 进行字符串的替换,把小写字母替换成大写字母 cmd := exec.Command("tr", "a-z", "A-Z") var ( err error stdout io.ReadCloser stdin io.WriteCloser ) stdout, err = cmd.StdoutPipe() if err != nil { panic(err) } stdin, err = cmd.StdinPipe() if err != nil { panic(err) } if err = cmd.Start(); err != nil { panic(err) } // 这里协程给tr命令输入标准输入的 小写 abc 字符串 go func() { for { time.Sleep(time.Second) stdin.Write([]byte("abc")) } }() // 然后这里从标准输出读到上面输入后tr命令转换后的大写字符串 ABC,但这里没有读到,不知道为什么 for { data := make([]byte, 512) n, err := stdout.Read(data) fmt.Println(string(data[:n]), err) } }

阅读量:16

点赞量:0

问AI
你如果是想写交互式命令行工具的话,我推荐一个包给你 github.com/AlecAivazis/survey/v2 参考文章你可以看这个 "https://blog.csdn.net/zhanggqianglovec/article/details/127986871" (https://link.segmentfault.com/?enc=sKA%2BzNmCJ2b5auBIdwRzCQ%3D%3D.MGaXgwW0NWK71vVnh9jWaxnipQ98TdkPbef4wMZXZomTjA3I0WCHnIZuWQ0NBOZZ3We3FMEuiZcrSGHmt8G%2B8dE4rLXD1uaD7QGvTp4X1Wg%3D) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241207/5ccf270d59113e53ee49374af6363376.png) 这篇文章应该能帮助到你