golang命令行执行多个道管命令如ls -l|wc -l

使用的exec包

函数:   exec.Command

执行单个命令 ls -l ,exec.Command很容易执行,但是需要执行ls -l|wc -l 这样的命令要怎么编写

golang中,需要执行两个命令ls -l  和  wc -l  但是这两个命令是有关系的,只要定义好两个命令的输入输出,就可以完成.

1. 定义两个命令行:

var commands []*exec.Cmd
commands = append(commands, exec.Command("ls", "-l"))
commands = append(commands, exec.Command("wc", "-l"))

2. 定义输入输出关系:   除了第一个命令,其他的命令都要设置关系, 最后输出也需要单独定义:

for i:= 1;i < len(commands);i++{
  commands[i].Stdin, _ = commands[i-1].StdoutPipe()
 
}
commands[len(commands)-1].Stdout = os.Stdout

3.开启除第一个命令之外,其它命令:

for i:=1;i<len(commands);i++{

   err := commands[i].Start()
   if err != nil {
      panic(err)
   }
}

4. 第一命令开始执行:

commands[0].Run()

5.等候其他命令执行结束:

for i:=1;i<len(commands);i++{

   err := commands[i].Wait()
   if err != nil {
      panic(err)
   }
}

猜你喜欢

转载自blog.csdn.net/weixin_39594447/article/details/87925114
l
今日推荐