将字符串传递给Golang中的STDIN命令

时间:2018-04-18 13:28:24

标签: go subprocess pipe exec piping

我想在Golang中复制以下subprocess.run函数调用。这样做的正确方法是什么?

subprocess.run(['kinit', username], input=password.encode())

到目前为止,我已经弄清楚如何使用exec.Command来运行外部命令,但令我困惑的是将字符串作为该命令的STDIN的输入传递。 Python的subprocess.run有一个方便的input参数来处理这个问题,如何在Golang中实现类似的结果?

1 个答案:

答案 0 :(得分:1)

我想出了怎么做。

package main

import "os/exec"
import "strings"

func main() {
    cmd := exec.Command("kinit", username)
    cmd.Stdin = strings.NewReader(password)
    err := cmd.Run()
}

Stdin对象的Command属性是STDIN管道,我们可以将其设置为包含输入字符串的strings.NewReader对象,以实现与问题中提到的Python剪辑。