golang代码实例库

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3315|回复: 0

golang:执行shell命令1(阻塞执行,等待结果)

[复制链接]

82

主题

82

帖子

486

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
486
发表于 2021-12-21 23:12:01 | 显示全部楼层 |阅读模式
实例说明
我们经常需要执行本地shell命令,或者是执行其他二进制可执行文件
1)执行本地二进制可执行文件
2)阻塞执行,等待执行完成再继续

实例代码
[Golang] 纯文本查看 复制代码
package main

import (
        "bytes"
        "fmt"
        "os/exec"
)

// 执行shell命令
func execShell(cmd string) (string, error) {
        shell := exec.Command("/bin/bash", "-c", cmd)

        // 重定向执行命令的标准输出和标准错误
        var out bytes.Buffer
        shell.Stdout = &out
        shell.Stderr = &out

        // 执行命令,这里会等待命令执行完成
        err := shell.Run()

        // 返回执行结果
        return out.String(), err
}

func main() {
        // 等待10秒,然后输出hello world
        cmd := "sleep 10;echo hello world"
        out, _ := execShell(cmd)
        fmt.Println(out)
        // 输出:hello world

        // test是我本地二进制可执行文件,打印系统参数os.Args
        // 传入参数abc和bcd1
        cmd = "/Users/工具方法/test abc bcd1"
        out, _ = execShell(cmd)
        fmt.Println(out)
        // 输出:[/Users/工具方法/test abc bcd1]
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|golang代码实例库 ( 粤ICP备2021162396号 )

GMT+8, 2024-12-5 08:23 , Processed in 0.018234 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表