Q:

exec.Commandで実行したコマンドが標準入力を読まずに終了してしまう

標準入力をする外部コマンドを実行したいです。
今回はbashのreadコマンドで標準入力がしたいです。
Python 3.6でこう書くとやりたいことができるんですが
import subprocess

print('start')
subprocess.run(['bash', '-c', 'read'])
print('end')

golangで書くと入力できずにgoのプログラムが終了してしまいました。
package main

import (
    "fmt"
    "os/exec"
)

func main() {
    fmt.Println("start")
    cmd := exec.Command("bash", "-c", "read")
    cmd.Run()
    fmt.Println("end")
}

どういう風に直すとreadコマンドで標準入力できるようになりますか？

A:

cmd.Stdin を os.Stdin にしてください。Cmd 型の godoc によると、この変数はデフォルトでは os.DevNull になっています。
以下サンプルコードです。
package main

import (
    "fmt"
    "log"
    "os"
    "os/exec"
)

func main() {
    fmt.Println("start")
    cmd := exec.Command("bash", "-c", "read")
    cmd.Stdin = os.Stdin
    if err := cmd.Run(); err != nil {
        log.Fatal(err)
    }
    fmt.Println("end")
}

