You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang中exec.Command执行bash命令无输出问题求助

在Go中通过source文件获取环境变量的问题解决办法

你的问题出在管道命令的进程隔离上:source fileName和echo $INFO通过|分隔后,属于两个独立的bash进程。source加载的变量只在第一个bash进程的内存中生效,第二个执行echo的bash进程完全看不到这个变量,自然没有输出。

把两个命令放在同一个bash进程里执行就能解决,用&&或者分号连接替代管道:

cmd1 := exec.Command("bash", "-c", "source fileName && echo $INFO")
out, err := cmd1.Output()
if err != nil {
    log.Fatalf("cmd.Run() failed with %s\n", err)
}
fmt.Printf("combined out:\n%s\n", string(out))

如果需要读取多个变量,也可以把逻辑写成多行shell代码块,同样用bash的-c参数执行:

cmd1 := exec.Command("bash", "-c", `
source fileName
echo "INFO: $INFO"
echo "OTHER_VAR: $OTHER_VAR"
`)

这样所有命令都在同一个bash会话中运行,source加载的环境变量就能被后续命令正常读取。

内容的提问来源于stack exchange,提问作者HSAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:05:24