Возникли проблемы с использованием IFS для вырезания строки в массив. BASH

Я перепробовал все, что мог придумать, чтобы разделить это на отдельные элементы для моего массива, но я изо всех сил..

Вот что я пытаюсь сделать..

(Эта команда просто извлекает IP-адреса из первого возвращенного элемента)

$ IFS=$"\n"
$ aaa=( $(netstat -nr | grep -v '^0.0.0.0' | grep -v 'eth' | grep "UGH" | sed 's/ .*//') )

$ echo "${#aaa[@]}"
1
$ echo "${aaa[0]}"
4.4.4.4
5.5.5.5

Это показывает более одного значения, когда я ищу массив для разделения 4.4.4.4 в ${aaa[0]} а также 5.5.5.5 в ${aaa[1]}

Я пытался:

IFS="\n"

IFS=$"\n"

IFS=" "

Очень запутался, так как в последнее время я много работал с массивами и никогда не сталкивался с этой конкретной проблемой.

Может кто-нибудь сказать мне, что я делаю не так?

1 ответ

Есть очень хороший пример того, как использовать IFS + read -a для разделения строки на массив на этой другой странице stackru

Каким образом разделение строки на массив путем "чтения" с помощью разделителя слов IFS в bash создает дополнительный пробел?

netstat устарел, заменен на ss, поэтому я не уверен, как воспроизвести вашу проблему

Другие вопросы по тегам