go语言怎么执行shell命令
时间: 2024-03-08 08:41:29 浏览: 185
在Go语言中,可以使用os/exec包来执行shell命令。该包中的Command()函数可以用于输入Shell命令,主要传入程序命令行和参数,第一个参数是命令行,第二个参数是命令行的参数,返回一个*Cmd的结构体,此结构体代表了一个执行的外部命令。当调用它的Run()、Output()、CombinedOutput()等方法后,这个命令就不能再次重复使用了,相当于是次抛。此外,os/exec包还支持管道连接输入输出,并支持阻塞与非阻塞方式执行命令。
举个例子,如果要在Go语言中执行一个简单的shell命令,比如ls,可以使用以下代码:
```go
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("ls")
output, err := cmd.Output()
if err != nil {
fmt.Println(err)
}
fmt.Println(string(output))
}
```
上述代码中,我们使用了Command()函数创建了一个*Cmd结构体,代表了一个执行的外部命令,然后调用了Output()方法来执行该命令,并获取了命令的输出结果。最后,我们将输出结果转换为字符串并打印出来。
相关问题
go 遍历执行shell命令
在Go语言中,可以使用`os/exec`包来执行shell命令并遍历输出结果。以下是一个示例代码:
```go
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("ls", "-l")
stdout, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
return
}
if err := cmd.Start(); err != nil {
fmt.Println(err)
return
}
buf := make([]byte, 1024)
for {
n, err := stdout.Read(buf)
if err != nil {
break
}
if n > 0 {
fmt.Print(string(buf[:n]))
}
}
if err := cmd.Wait(); err != nil {
fmt.Println(err)
return
}
}
```
在上面的代码中,我们使用`exec.Command`函数创建了一个执行`ls -l`命令的`cmd`对象。然后,我们使用`cmd.StdoutPipe`函数获取命令的标准输出管道,并使用`cmd.Start`函数启动命令。接下来,我们使用一个循环遍历命令的输出,并将输出打印到控制台。最后,我们使用`cmd.Wait`函数等待命令执行完成。如果命令执行过程中出现错误,我们将错误打印到控制台。
阅读全文