不同shell命令在go exec中表现不同的行为
创始人
2025-01-09 16:00:25
0

在Go中使用exec包执行不同的shell命令可能会导致不同的行为。以下是一些常见的示例和解决方法:

  1. 简单命令的执行:
package main

import (
	"fmt"
	"os/exec"
)

func main() {
	cmd := exec.Command("ls", "-l")
	output, err := cmd.Output()
	if err != nil {
		fmt.Println("命令执行失败:", err)
		return
	}

	fmt.Println(string(output))
}

上述代码将执行ls -l命令并打印输出。如果命令执行成功,将输出命令的结果。否则,将输出错误信息。

  1. 带有管道的命令:
package main

import (
	"fmt"
	"os/exec"
)

func main() {
	cmd1 := exec.Command("echo", "Hello")
	cmd2 := exec.Command("grep", "H")

	cmd2.Stdin, _ = cmd1.StdoutPipe()

	cmd2.Start()
	cmd1.Run()

	output, _ := cmd2.Output()

	fmt.Println(string(output))
}

上述代码使用管道将echo Hello的输出传递给grep H命令,并打印匹配的结果。

  1. 交互式命令的执行:
package main

import (
	"bufio"
	"fmt"
	"io"
	"os/exec"
)

func main() {
	cmd := exec.Command("bash")

	stdin, _ := cmd.StdinPipe()
	stdout, _ := cmd.StdoutPipe()

	cmd.Start()

	go func() {
		defer stdin.Close()
		io.WriteString(stdin, "echo Hello World\n")
	}()

	scanner := bufio.NewScanner(stdout)
	go func() {
		for scanner.Scan() {
			fmt.Println(scanner.Text())
		}
	}()

	cmd.Wait()
}

上述代码创建了一个交互式的bash子进程,并执行echo Hello World命令,然后打印输出。

这些示例展示了在Go中使用exec包执行不同的shell命令的不同行为和解决方法。根据你的具体需求,你可以根据这些示例进行修改和定制。

相关内容

热门资讯

揭秘攻略!微乐广西小程序,乐达... 揭秘攻略!微乐广西小程序,乐达app辅助,详细教程(真是有挂)1、微乐广西小程序辅助软件下载优化,微...
详细说明!皮皮透视辅助软件工具... 详细说明!皮皮透视辅助软件工具,爱玩联盟辅助,详细器(详细教程)1、皮皮透视辅助软件工具破解器简单,...
今日头条!家乡大二的技巧,卡五... 今日头条!家乡大二的技巧,卡五星辅助器,详细软件(有挂详情)1、许多玩家不知道家乡大二的技巧辅助怎么...
最新技巧!微乐小程序有脚本吗,... 最新技巧!微乐小程序有脚本吗,欢乐情怀游戏源码,详细攻略(果真有挂)1、玩家可以在微乐小程序有脚本吗...
必备攻略!518互游辅助,欢乐... 必备攻略!518互游辅助,欢乐游戏城攻略,详细脚本(讲解有挂)欢乐游戏城攻略破解侠是真的助透视。每个...
最新通报!洞庭茶苑辅助,微乐手... 最新通报!洞庭茶苑辅助,微乐手游微乐辅助免费,详细技巧(有挂方针)1、最新通报!洞庭茶苑辅助,微乐手...
科技揭秘!雀姬辅助脚本,小逸碰... 科技揭秘!雀姬辅助脚本,小逸碰胡辅助器,详细教程(详细教程)小逸碰胡辅助器能透视中分为三种模型:小逸...
免费测试版!桂林字牌辅助,多乐... 免费测试版!桂林字牌辅助,多乐小程序辅助工具,详细软件(竟然有挂)1、多乐小程序辅助工具脚本辅助下载...
分辨真假!微信决胜游戏辅助,蘑... 分辨真假!微信决胜游戏辅助,蘑菇云辅助怎么使用,详细软件(详细教程)1、全新机制【蘑菇云辅助怎么使用...
玩家必知教程!福建兄弟13水辅... 玩家必知教程!福建兄弟13水辅助,传送屋有挂吗,详细挂(有挂总结)1、福建兄弟13水辅助辅助软件下载...