Понимание вывода cut -f

Понимание вывода cut -f

Спасибо за терпение. Я новичок в 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), поэтому значения переменных доступны после цикла.

Связанный контент