github.com/keysonzzz/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgCmd/Run.go (about) 1 package kmgCmd 2 3 import "os/exec" 4 5 /* 6 运行命令,并且把命令输入输出和当前的输入输出接起来 7 会回显输入的命令 8 会显示输出的结果 9 应该可以从命令行输入输入,但是没有使用过. 10 11 传入一个字符串是命令, 不允许参数中包含空格,如果命令有复杂参数请使用 RunOsStdioCmd 12 不支持bash语法, 不能在里面使用bash的各种连接符之类的. 13 只能写一条命令 14 15 不支持下列用法: 16 ls 'a b' //不允许参数中包含空格. 17 echo 1 > /dev/null //不支持bash语法,会输出 1 > /dev/null 18 */ 19 func Run(cmd string) (err error) { 20 return CmdString(cmd).Run() 21 } 22 23 //相比Run 不回显命令 并且使用slice作为输入方式 24 func StdioSliceRun(args []string) (err error) { 25 return CmdSlice(args).StdioRun() 26 } 27 28 func MustRun(cmd string) { 29 CmdString(cmd).MustRun() 30 } 31 32 //代理运行命令,同run,出现错误时,会退出进程 33 // 请仅在命令行程序中使用 34 func ProxyRun(cmd string) { 35 CmdString(cmd).ProxyRun() 36 } 37 38 //相比MustRun 如果进程返回值不是0,不报错 39 func MustRunNotExistStatusCheck(cmd string) { 40 CmdString(cmd).MustRunAndNotExitStatusCheck() 41 } 42 43 //相比MustRun 也返回输出结果 44 func MustRunAndReturnOutput(cmd string) []byte { 45 return CmdString(cmd).MustRunAndReturnOutput() 46 } 47 48 //相比MustRun 返回输出结果,但是不会输出到 stdout 49 func MustCombinedOutput(cmd string) []byte { 50 return CmdString(cmd).MustCombinedOutput() 51 } 52 53 func MustCombinedOutputWithErrorPrintln(cmd string) []byte { 54 return CmdString(cmd).MustCombinedOutputWithErrorPrintln() 55 } 56 57 func MustCombinedOutputAndNotExitStatusCheck(cmd string) []byte { 58 return CmdString(cmd).MustCombinedOutputAndNotExitStatusCheck() 59 } 60 61 //相比MustRun 输入的命令会被放到bash中执行,cmd的语法和bash一致. 62 func MustRunInBash(cmd string) { 63 CmdBash(cmd).MustRun() 64 } 65 66 func IsErrorExitStatus(err error) bool { 67 if err == nil { 68 return false 69 } 70 _, ok := err.(*exec.ExitError) 71 return ok 72 }