
Спасибо за терпение. Я новичок в Linux и мне нужна помощь в понимании того, как анализировать вывод команды cut.
Итак, в настоящее время у меня есть переменная
x=$(discover nginx --human=nood | cut -f1,6)
Итак, мой вывод echo "$x
— это список подобных
экземплярID IP-адрес
В моей программе я хочу запустить цикл for для каждой строки x и извлечь первую и вторую переменные отдельно. Например: если это был массив a[0] = instanceID и a[1]= IPAdderess
Пожалуйста, кто-нибудь может мне подсказать, как извлечь элементы по отдельности. Я знаю, что могу запустить цикл $x
и сделать разрез внутри него, но я хочу понять, есть ли лучший способ сделать это.
решение1
Для этого вам вообще не нужно сохранять данные в переменной, discover
достаточно цикла по выходным данным:
discover nginx --human=nood | cut -f 1,6 |
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done
В качестве альтернативы можно использовать bash
или оболочку, которая понимает подстановки процессов ( <( ... )
):
while read -r instanceID IPAddress; do
# Use "$instanceID" and "$IPAddress" here
done < <( discover nginx --human=nood | cut -f 1,6 )
Разница между этими двумя значениями видна только в том случае, если вы хотите перенести значения какой-либо переменной.вне цикла. В первом примере цикл будет выполняться в подоболочке, и поэтому вам не придется использовать какие-либо значения переменных, заданные внутри цикла.послецикл (они существуют в своей собственной локальной среде).
Во втором примере не задействованы ни одна подоболочка (за исключением той, которая запускает подстановку процесса с помощью discover
и cut
), поэтому значения переменных доступны после цикла.