为了账号安全,请及时绑定邮箱和手机立即绑定

带有 bash -c 的 exec.Command 不返回标准输出

带有 bash -c 的 exec.Command 不返回标准输出

Go
长风秋雁 2022-07-18 15:47:57
执行下面的程序,out是一个空的 type 切片[]uint8。package mainimport (    "context"    "log"    "os/exec")func main() {    ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)    defer cancel()    cmd := exec.CommandContext(ctx, "bash", "-c", "python3", "-c", "print('hello')")    out, _ := cmd.Output()    log.Println(out)}但是,如果我在没有 的情况下运行bash -c,我会得到预期的输出。这是一个bash -c不需要的简单示例,但在现实世界中,我的应用程序正在调用一个导入多个包的 python 脚本,如果没有bash -c,我会从 python 中得到“找不到模块”错误。我在这里做错了什么?如何捕获标准输出内容?
查看完整描述

1 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

bash -c后面应该跟一个字符串参数和要执行的命令,然后 bash 会做参数处理。

cmd := exec.CommandContext(ctx, "bash", "-c", "python3 -c 'print(\"hello\")'")


查看完整回答
反对 回复 2022-07-18
  • 1 回答
  • 0 关注
  • 259 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信