Golang - 执行命令

时间:2016-10-08 07:58:24

标签: go

在golang中提示执行此命令:

/bin/bash script.sh < text.txt

我使用参数执行脚本:

package main

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

func main() {
    argstr := []string{"script.sh", "arg1", "arg2"}
    out, err := exec.Command("/bin/bash", argstr...).Output()
    if err != nil {
        log.Fatal(err)
        os.Exit(1)
    }
    fmt.Println(string(out))
}

以下是如何从文本文件传输输出?

2 个答案:

答案 0 :(得分:3)

您应该执行的命令是:

assert_eq!(make_foo!("test"; 2), [Foo { info: "test 1" }, Foo { info: "test 2" }]);

所以

/bin/bash -c 'script.sh < text.txt'

Bash将解释输入重定向并完成工作。

答案 1 :(得分:0)

专业提示:不要忘记暂停

ctx, cancel := context.WithTimeout(context.Background(), 4*time.Second)
defer cancel()
argstr := []string{"/bin/bash", "-c", "script.sh < text.txt"}
cmd := exec.CommandContext(ctx, argstr...)
cmd.Stderr = &errorBuffer
cmd.Stdout = &outputBuffer
err := cmd.Run()
if err != nil {
    return fmt.Errorf("something bad happened: %v", err)
}

我总是建议安全地玩。