Uso de NC en bucle For para iterar a través de una matriz con direcciones IP - error de sintaxis: operador aritmético no válido

Uso de NC en bucle For para iterar a través de una matriz con direcciones IP - error de sintaxis: operador aritmético no válido

Estoy trabajando en la creación de un script Bash para mi trabajo que recorre en iteración una serie de direcciones IP y utiliza NC para buscar puertos abiertos en cada una de esas direcciones IP. Si usara el comando NC solo y escribiera manualmente el comando para cada dirección IP, entonces funcionará, pero no es una buena manera de hacerlo. Sin embargo, me encuentro con un error cuando uso una matriz con todas las direcciones IP. Aquí hay un ejemplo de mi código (usando direcciones IP de Google y Microsoft para ejemplos y privacidad):

#!/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

El error que obtengo de este ejemplo (que es similar al ejemplo que obtengo del script real) es este:

./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")

Puse el código en un archivo llamado testPorts.sh, lo hice ejecutable y lo ejecuté desde la terminal. Y esto es lo que obtuve. La línea 14 es la línea con el comando NC. ¿Alguien sabe qué estoy haciendo mal aquí y, de ser así, cómo lo soluciono?

He probado a poner las direcciones IP entre comillas, pero con el mismo error. Si las direcciones IP en la matriz están entre comillas y/o la variable ${IP_Addresses[@]}está entre comillas, aparece el mismo error.

Respuesta1

Parece que quieres iterar sobre elíndicesde las dos matrices, lo cual puedes hacer usandodirección indirecta

#!/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

También sea coherente con los nombres de sus variables ( FILE_Nameversus FILE_NAME) y adquiera el hábito de citar expansiones de variables.

información relacionada