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

sh Shell中无需显式文件创建实现GPG密钥导入单行命令方案

解决sh环境下GPG密钥自动化导入的单行命令问题

你的问题出在原来的命令用了Bash专属的进程替换特性(<(...)),而POSIX标准的sh并不支持这个语法,所以直接运行会报错。下面给你一个完全兼容sh的单行命令,同时保留密码传递和密钥导入的自动化逻辑:

可行的单行命令

( echo "$KEY_PASSWORD" | exec 3<&0; echo "$KEY" | base64 -d | gpg --batch --passphrase-fd 3 --yes --import - )

为什么这样能行?

我拆解一下每个部分的作用:

  • 整个命令用子shell(...)包裹,避免修改当前shell的文件描述符,保证环境干净。
  • echo "$KEY_PASSWORD" | exec 3<&0:把密码输出到管道后,通过exec将管道的内容(也就是密码)绑定到文件描述符3上,这样gpg就能从fd3读取密码,不会和密钥的输入冲突。
  • echo "$KEY" | base64 -d:将Base64编码的密钥解码,通过管道直接传给gpg的标准输入。
  • gpg --batch --passphrase-fd 3 --yes --import -:指定从fd3读取密码,从标准输入(-明确表示读取stdin)获取解码后的密钥,--batch禁用交互模式,--yes自动确认覆盖现有密钥,完全实现自动化。

这个方案全程不需要创建临时文件,所有操作都在内存中完成,安全性也更有保障。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:17:48