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

如何在Bash脚本中将Git命令输出保存到变量并屏蔽终端输出

Git Push输出捕获与终端屏蔽问题解决

问题原因

git push的状态提示、错误信息等内容默认输出到标准错误流(stderr),而你之前用的$(...)命令替换和>重定向只能捕获标准输出流(stdout),所以变量会是空的,stderr的内容还是会跑到终端显示。

解决方法

  • 捕获所有输出(stdout+stderr)到变量,同时屏蔽终端输出

    var=$(git push origin main 2>&1)
    

    这里2>&1的作用是把stderr(文件描述符2)的内容重定向到stdout(文件描述符1),这样$(...)就能把所有输出都存到变量里,终端不会有任何输出。

  • 只捕获stdout,彻底丢弃stderr(完全屏蔽终端输出)
    如果不需要捕获错误信息,只想让终端安静,可以用:

    var=$(git push origin main 2>/dev/null)
    

    2>/dev/null会把stderr的内容直接丢到空设备,不会在终端显示,同时stdout的内容会被存到变量中。

  • 同时存到变量和文件(可选)
    如果需要把输出既存到变量,又写入文件,可以用:

    var=$(git push origin main 2>&1 | tee tmp.txt)
    

    tee命令会把输出同步写入文件和stdout,配合2>&1就能让变量拿到所有内容,同时保存到文件里。

验证

执行完命令后,用echo "$var"就能查看捕获到的输出内容,确认是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:09:24