Go 实用小工具
Go 小工具
执行命令行
1package main
2
3import (
4 "flag"
5 "fmt"
6 "runtime"
7 "os/exec"
8 "strings"
9)
10
11func main() {
12 // flag 包使用方法:flag.Type("flagName",defaultValue,"help message") *Type
13 var name = flag.String("name","ls","info: 命令")
14 var args = flag.String("args","-h","info: 多个参数")
15 flag.Parse()
16 fmt.Println(*name)
17 fmt.Println(*args)
18 cmd := *name + " " + *args
19 fmt.Println("Command: %s", cmd)
20 out, err := exec.Command("bash", "-c", cmd).CombinedOutput()
21 if runtime.GOOS == "windows" && err != nil {
22 fmt.Println("Command error: %s", err)
23 out, err = exec.Command("cmd", "/C", cmd).CombinedOutput()
24 }
25 checkOutput := strings.Contains(string(out), "不是内部或外部命令,也不是可运行的程序")
26 if err != nil || checkOutput {
27 fmt.Println("Execute Command Error: %s", err)
28 } else {
29 fmt.Println("Successfully Execute Command Output: %s", out)
30 }
31}
实现在 Windows/Linux 下执行命令行的操作 例如:
1ls -a -l
2total 1024
3dr-xr-x---. 10 root root 4096 Jul 26 11:12 .
4dr-xr-xr-x. 19 root root 4096 Jul 26 01:30 ..
5-rw-------. 1 root root 3135 Mar 8 12:44 xxx.cfg
6-rw------- 1 root root 8789 Jul 26 11:10 .bash_history
7-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
8...