Exec a shell command in Go

前端 未结 7 1618
甜味超标
甜味超标 2020-12-04 10:01

I\'m looking to execute a shell command in Go and get the resulting output as a string in my program. I saw the Rosetta Code version:

package main
import \"f         


        
7条回答
  •  甜味超标
    2020-12-04 10:54

    Here is a simple function that will run your command and capture the error, stdout, and stderr for you to inspect. You can easily see anything that might go wrong or be reported back to you.

    // RunCMD is a simple wrapper around terminal commands
    func RunCMD(path string, args []string, debug bool) (out string, err error) {
    
        cmd := exec.Command(path, args...)
    
        var b []byte
        b, err = cmd.CombinedOutput()
        out = string(b)
    
        if debug {
            fmt.Println(strings.Join(cmd.Args[:], " "))
    
            if err != nil {
                fmt.Println("RunCMD ERROR")
                fmt.Println(out)
            }
        }
    
        return
    }
    

    You can use it like this (Converting a media file):

    args := []string{"-y", "-i", "movie.mp4", "movie_audio.mp3", "INVALID-ARG!"}
    output, err := RunCMD("ffmpeg", args, true)
    
    if err != nil {
        fmt.Println("Error:", output)
    } else {
        fmt.Println("Result:", output)
    }
    

    I've used this with Go 1.2-1.7

提交回复
热议问题