Использование NC в цикле For для итерации по массиву с IP-адресами — синтаксическая ошибка: недопустимый арифметический оператор

Использование NC в цикле For для итерации по массиву с IP-адресами — синтаксическая ошибка: недопустимый арифметический оператор

Я работаю над созданием скрипта Bash для своей работы, который перебирает массив IP-адресов и использует NC для сканирования открытых портов на каждом из этих IP-адресов. Если бы я использовал команду NC отдельно и вручную вводил команду для каждого IP-адреса, то это сработало бы, но это не очень хороший способ. Однако я сталкиваюсь с ошибкой, когда использую массив со всеми IP-адресами в нем. Вот пример моего кода (используя IP-адреса Google и Microsoft для примеров и конфиденциальности):

#!/bin/bash
IP_Addresses=(
172.217.6.142
191.239.213.197
)
FILE_Name=(
"google"
"microsoft"
)
for i in "${IP_Addresses[@]}"
do
    nc -w2 -zv4 ${IP_Addresses[@]} 1-100 > "${FILE_Name[$i]}".log 2>&1
done

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

./testPorts.sh: line 14: 172.217.6.142: syntax error: invalid arithmetic operator (error token is ".217.6.142")
./testPorts.sh: line 14: 191.239.213.197: syntax error: invalid arithmetic operator (error token is ".239.213.197")

Я поместил код в файл testPorts.sh, сделал его исполняемым и запустил из терминала. И вот что я получил. Строка 14 — это строка с командой NC. Кто-нибудь знает, что я делаю здесь не так, и если да, то как это исправить?

Я пробовал заключать IP-адреса в кавычки, но с той же ошибкой. Если IP-адреса в массиве заключены в кавычки и/или переменная ${IP_Addresses[@]}заключена в кавычки, я получаю ту же ошибку.

решение1

Кажется, вы хотите повторитьиндексыиз двух массивов - что можно сделать с помощьюкосвенность

#!/bin/bash
IP_Addresses=(
172.217.6.142
191.239.213.197
)
FILE_Name=(
"google"
"microsoft"
)
for i in "${!IP_Addresses[@]}"
do
    nc -w2 -zv4  "${IP_Addresses[$i]}" 1-100 > "${FILE_Name[$i]}".log 2>&1
done

Также будьте последовательны в отношении имен переменных ( FILE_Nameа не FILE_NAME) и возьмите за привычку заключать расширения переменных в кавычки.

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