2016-09-20 31 views
-1

我需要从GPG获取公钥ID。 SO上的所有内容都讨论导入,导出等。在下面的示例中,我需要获取ABCD1234值以用于bash脚本中?如何在bash中获得GPG公钥?

$ gpg --list-keys 
/Users/jblow/.gnupg/pubring.gpg 
--------------------------------- 
pub 2048R/ABCD1234 2016-09-20 
uid  [ultimate] Joe Blow <[email protected]> 
sub 2048R/JDKKHU76 2016-09-20 
+2

从'男人gpg':“避免使用此命令的输出脚本或其他程序它可能会随着GnuPG的变化而改变。“ – Cyrus

回答

0

awk + bash做的字符串操作方式。

# 'awk' extracts the '2048R/ABCD1234' part of the command and 
# string-manipulation done to strip-off characters up to the trailing '/' character 

$ keyVal=$(gpg --list-keys | awk '/pub/{if (length($2) > 0) print $2}'); echo "${keyVal##*/}" 
ABCD1234 

如果要提取的sub关键只是改变awk的模式

$ keyVal=$(gpg --list-keys | awk '/sub/{if (length($2) > 0) print $2}'); echo "${keyVal##*/}" 
JDKKHU76 
0

您可以使用grep:

gpg --list-keys | grep pub | grep -o -P '(?<=/)[A-Z0-9]{8}' 

输出:

ABCD1234