以下answer,下面是运行外部命令的代码:
package main
import (
"bytes"
"log"
"os/exec"
)
func main() {
path, err := exec.LookPath("ls")
if err != nil {
log.Fatal(err)
}
log.Printf("pwd can be found at path: %s \n", path)
cmd := exec.Command(path, " -l .")
var out bytes.Buffer
cmd.Stdout = &out
err = cmd.Run()
if err != nil {
log.Println("after running external command: ", err)
}
log.Println("buffer output:", out.String())
}
以下是输出:
2023/10/22 10:45:03 ls can be found at path: /usr/bin/ls
2023/10/22 10:45:03 after running external command: exit status 2
2023/10/22 10:45:03 buffer output:
如何使用
exec
包运行外部命令?
几个问题:
exec.Command(path, " -l .")
中,参数应该是单独的字符串,而不是单个字符串。ls
命令路径被记录为“pwd”,这与您在问题中提到的输出不一致。试试这个:
package main
import (
"bytes"
"log"
"os/exec"
)
func main() {
path, err := exec.LookPath("ls")
if err != nil {
log.Fatal(err)
}
log.Printf("ls can be found at path: %s \n", path)
cmd := exec.Command(path, "-l", ".")
var out bytes.Buffer
cmd.Stdout = &out
err = cmd.Run()
if err != nil {
log.Println("after running external command: ", err)
}
log.Println("buffer output:", out.String())
}