用go写一个程序,调用命令行执行,并可以向里面传递命令行参数
时间: 2023-03-01 19:01:43 浏览: 104
您可以使用 Go 的标准库 "os/exec" 来调用命令行命令并向其传递参数。下面是一个例子:
```
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("ls", "-l", "-h")
output, err := cmd.Output()
if err != nil {
fmt.Printf("Error: %s\n", err)
}
fmt.Printf("Output: %s\n", output)
}
```
在这个例子中,我们调用了 `ls` 命令并向其传递了参数 `-l` 和 `-h`。我们使用 `cmd.Output` 方法来获取命令的输出,并将其作为字节切片返回。
如果您需要将输入作为管道传递给命令,您可以使用 `cmd.Stdin` 字段。例如:
```
package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("grep", "hello")
stdin, err := cmd.StdinPipe()
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
go func() {
defer stdin.Close()
fmt.Fprintln(stdin, "hello world")
fmt.Fprintln(stdin, "hello go")
}()
output, err := cmd.Output()
if err != nil {
fmt.Printf("Error: %s\n", err)
return
}
fmt.Printf("Output: %s\n", output)
}
```
这段代码启动了一个 goroutine,并将输入写入管道。该命令从管道中读取输入,并返回包含 "hello world" 和 "hello go" 的输出。
阅读全文