执行下面的程序,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\")'")
- 1 回答
- 0 关注
- 259 浏览
添加回答
举报
0/150
提交
取消