我想在 Go 中执行一个 shell 命令,并在我的程序中将结果输出作为字符串。我看到了 Rosetta 代码 版本:
package main
import "fmt"
import "exec"
func main() {
cmd, err := exec.Run("/bin/ls", []string{"/bin/ls"}, []string{}, "", exec.DevNull, exec.PassThrough, exec.PassThrough)
if (err != nil) {
fmt.Println(err)
return
}
cmd.Close()
但这并没有以我可以编程访问的方式捕获实际的标准输出或错误 - 那些仍然打印到常规的 stdout / stderr。我看到使用 Pipe 作为 out 或 err 可以在其他地方提供帮助,但没有示例说明如何这样做。有任何想法吗?
原文由 Chris Bunch 发布,翻译遵循 CC BY-SA 4.0 许可协议
这个答案并不代表 Go 标准库的当前状态。请查看 @Lourenco 的最新方法的答案!
您的示例实际上并未从 stdout 读取数据。这对我有用。