golang cmd命令执行
1. 执行命令并获取执行结果
package main
import (
"fmt"
"os/exec"
)
func main() {
// 通过exec.Command函数执行命令或者shell
// 第一个参数是命令路径,当然如果PATH路径可以搜索到命令,可以不用输入完整的路径
// 第二到第N个参数是命令的参数
// 下面语句等价于执行命令: ls -l /var/
cmd := exec.Command("/bin/ls", "-l", "/var/")
// 执行命令,并返回结果
output,err := cmd.Output()
if err != nil {
panic(err)
}
// 因为结果是字节数组,需要转换成string
fmt.Println(string(output))
}
2. 执行命令不返回结果
package main
import (
"os/exec"
)
func main() {
cmd := exec.Command("/bin/ls", "-l", "/var/")
// 执行命令,返回命令是否执行成功
err := cmd.Run()
if err != nil {
// 命令执行失败
panic(err)
}
// 等待执行完成
cmd.Wait()
}
go语言调用cmd
package main
import (
"fmt"
"os/exec"
)
func main() {
//删除C:\Users\Administrator\Desktop目录下的index.html文件
c := exec.Command("cmd", "/C", "del", "C:\\Users\\Administrator\\Desktop\\index.html")
if err := c.Run(); err != nil {
fmt.Println("Error: ", err)
}
}
GO语言--执行命令行
1. 使用Command生成Cmd结构体
cmd := exec.Command("ls", "-l")
2. 执行命令
两种方式
1. func (*Cmd) Run
执行命令并等待命令执行结束
func main() {
cmd := exec.Command("tr","a-z","A-Z")
cmd.Stdin = strings.NewReader("abcdefg")
var out bytes.Buffer
cmd.Stdout = &out
err := cmd.Run()
if err != nil {
log.Fatal(err)
}
fmt.Println(out.String())
2. func (*Cmd) Start
执行命令但不等待执行结果 使用wait 等待执行结束
func main() {
cmd := exec.Command("sleep", "5")
err := cmd.Start()
if err != nil {
log.Fatal(err)
}
log.Printf("Waiting for command to finish...")
err = cmd.Wait()
log.Printf("Command finished with error: %v", err)
}
golang exec 执行系统命令
最简单的方法:
cmd := exec.Command("/bin/sh/", "-c", "linux命令")
或复杂的, 各个参数都要单独写
cmd := exec.Command("ls", "-l", "-a")
package main
import (
"bytes"
"fmt"
"os/exec"
)
func main() {
in := bytes.NewBuffer(nil)
cmd := exec.Command("sh")
cmd.Stdin = in
go func() {
in.WriteString("echo hello world > test.txt\n")
in.WriteString("exit\n")
}()
if err := cmd.Run(); err != nil {
fmt.Println(err)
return
}
}
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/08/09 05:06