2016-09-20 30 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