回答

收藏

你如何在 Go 中获得系统命令的输出?

技术问答 技术问答 257 人阅读 | 0 人回复 | 2023-09-11

假设我想在 go 在程序中运行‘ls’,并将结果存储在字符串中。在 中似乎有一些命令exec 和 os 包中的衍生过程,但它们需要 stdout 等的文件参数。有没有办法将输出作为字符串?
; C* D+ ~1 h1 {: o2 i) w                                                               
- B8 ]- H1 u  z& g9 h    解决方案:                                                               
9 p+ v, G* W3 M! K, M8 l6 y                                                                现在有一个更简单的方法:
0 L, z6 v4 N! a7 M# {. J/ Z2 r3 K5 V1 c; e! w
    package mainimport  "fmt"    "log"    "os/exec")func main()      out,err := exec.Command("date").Output()    if err != nil              log.Fatal(err)    }    fmt.Printf("The date is %s\n",out)}
    6 o4 F, J: [  Y6 W5 C3 u: `5 G
out标准输出在哪里?其格式为[]byte,但是,您可以使用以下命令轻松地将其更改为字符串:: F6 l& h& ^9 @' I) x
    string(out)
    " d2 E: ^  l9 m# [6 }! ?% Y) a9 F
你也可以用CombinedOutput() 代替Output()which 返回标准输出和标准错误。
$ Q! Q9 J# H/ F5 F$ h  r3 Q执行命令
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则