我有一个脚本来检查macOS上的证书身份
CRT=$(security find-identity -v | grep my-cert.test.com)
结果是:
1) 13DB7FSDF188E2C4454KK33E5E0A7B4LK6714658 "my-cert.test.com"
2) 5L56971E29DFA20LHD5E2CEA9DF6J7C46C2D0FD5 "my-cert.test.com"
3) JS34KL78LG620CJKMDFBV5K1K56MNCL9M6SD61L "my-cert.test.com"`
使用awk
提取身份信息
CRT=$(security find-identity -v | grep my-cert.test.com | awk '{ print $2}’)
结果是:
13DB7FSDF188E2C4454KK33E5E0A7B4LK6714658
5L56971E29DFA20LHD5E2CEA9DF6J7C46C2D0FD5
JS34KL78LG620CJKMDFBV5K1K56MNCL9M6SD61L
这意味着我有3个证书,并且使用awk
我已经分离了其余证书,只是在多个结果之间留有空格。现在我想在grep结果上面设置一个变量。如果grep
的结果是3行,则如上所述,将其设置为不同的变量。
示例:
ONE=13DB7FSDF188E2C4454KK33E5E0A7B4LK6714658
TWO=5L56971E29DFA20LHD5E2CEA9DF6J7C46C2D0FD5
THREE=JS34KL78LG620CJKMDFBV5K1K56MNCL9M6SD61I4
,然后继续。
因此,我可以在其他脚本中使用这些变量。 grep结果可以是1或3或更大的随机数。
答案 0 :(得分:4)
请尝试以下操作,可以将awk
的结果保存到数组中,以后也可以在程序中进一步使用该数组的值。(从{{ 1}}可以自行处理字符串部分的搜索)
grep
现在,您可以通过以下方式访问(所有阵列的时间)名为awk
的阵列。
CRT=($(security find-identity -v | awk '/my-cert.test.com/{ print $2}'))
这就是为什么如果我们需要将相同类型的许多值存储在许多变量中,那么数组就存在的原因,因此尽管使用了N个变量,也要使用数组并使用索引访问它们的值。
答案 1 :(得分:0)
set - $CRT; index=0; while [ "$1" ]; do let index=$index+1; eval var${index}="$1"; shift; done
这将为您拥有的身份创建变量var1,var2等。