Установите результат grep в мультипалальные переменные - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть скрипт, который проверяет подлинность сертификатов в 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 или выше.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019
set - $CRT; index=0; while [ "$1" ]; do let index=$index+1; eval var${index}="$1"; shift; done

Это создаст переменные var1, var2 и т. Д. Для любого количества идентификаторов.

0 голосов
/ 15 февраля 2019

Не могли бы вы попробовать следующее, вы могли бы сохранить результат awk в массив, а позже вы могли бы также использовать значения этого массива в своей программе (убрал grep из вашей попытки, так как awk мог обрабатывать поисксамой строковой части)

CRT=($(security find-identity -v | awk '/my-cert.test.com/{ print $2}'))

Теперь вы можете получить доступ к массиву (все время массива) с именем CRT, выполнив следующие действия.

count=0
for i in "${CRT[@]}"
do
  echo "CRT["$count"]=$i"
  count=$((count + 1))
done

Именно поэтому существуют массивы, если мынужно много разных значений одного и того же типа для хранения во многих переменных, поэтому, несмотря на использование N переменных, используйте массив и получите доступ к своим значениям с помощью индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...