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

Bash脚本中获取gpg --edit-key输出失败:原因及解决方法

问题原因及解决办法

失败原因

gpg的--edit-key交互模式下,绝大多数输出(包括密钥详情、交互提示信息)都是输出到标准错误流(stderr),而非标准输出流(stdout)。而你使用的命令替换$(...)和管道| tee默认只会捕获stdout的内容,因此无法获取到预期的输出。

解决办法

核心思路是把gpg的stderr输出重定向到stdout,让命令替换或管道能捕获到这些内容:

1. 将输出存入变量

修改命令,添加2>&1把stderr重定向到stdout:

var=$(echo -e "quit\n" | gpg --command-fd 0 --edit-key userid 2>&1)
echo "$var"

2. 通过tee写入文件

同样添加2>&1,让tee能捕获到stderr的内容:

echo -e "quit\n" | gpg --command-fd 0 --edit-key userid 2>&1 | tee file
cat file

如果只需要捕获stderr而丢弃stdout,可以用2>&1 >/dev/null,比如:

var=$(echo -e "quit\n" | gpg --command-fd 0 --edit-key userid 2>&1 >/dev/null)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:40:38