Используя NC в том, Чтобы Цикл Выполнил итерации через Массив с 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
задан 24 March 2018 в 04:20

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) и выработайте привычку заключения в кавычки переменных расширений.

1
ответ дан 7 December 2019 в 15:22

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

Похожие вопросы: