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  }