使用go执行系统命令和二进制文件也是我们在编码过程中常常要使用到的功能。
go本身的包os/exec
包含了对应的实现,接下来我们举个例子说明一下
执行 go version 打印go版本
package main
import (
"fmt"
"log"
"os/exec"
)
func main() {
cmdOutput, err := exec.Command("go", "version").Output()
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s", cmdOutput)
}
当然实际的使用过程中肯定会伴随其他的场景。例如设置工作目录,设置执行超时等特殊需求,这个时候原生库的编码就会让人很难受。
今天在这里推荐一个可以在linux/windows/darwin 上执行命令的golang开源库,这个库的Star虽然不是很高,但是封装后的api使用起来还算舒服。还是通过几个例子来进行一下说明
package main
import (
"fmt"
"github.com/commander-cli/cmd"
)
func cmdLibraryUse() {
c := cmd.NewCommand("echo text-cmd-shell")
err := c.Execute()
if err != nil {
panic(err.Error())
}
fmt.Printf("%s", c.Stdout())
fmt.Println("stderr is " + c.Stderr())
}
c := cmd.NewCommand("echo hello", cmd.WithStandardStreams)
c.Execute()
其他用法大家可以参照官方示例,如果大家有其他更好的cmd封装库可以推荐给我,大家一起学习进步。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。