Возникли проблемы с использованием 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
netstat устарел, заменен на ss, поэтому я не уверен, как воспроизвести вашу проблему