Usando NC no For Loop para iterar por meio de array com endereços IP - erro de sintaxe: operador aritmético inválido

Usando NC no For Loop para iterar por meio de array com endereços IP - erro de sintaxe: operador aritmético inválido

Estou trabalhando na criação de um script Bash para meu trabalho que percorre uma matriz de endereços IP e usa NC para procurar portas abertas em cada um desses endereços IP. Se eu usasse o comando NC sozinho e digitasse manualmente o comando para cada endereço IP, ele funcionaria, mas não é uma boa maneira de fazer isso. No entanto, encontro um erro ao usar uma matriz com todos os endereços IP nela contidos. Aqui está um exemplo do meu código (usando endereços IP do Google e da Microsoft para exemplos e privacidade):

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

O erro que recebo deste exemplo (que é semelhante ao exemplo que recebo do script real) é 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")

Coloquei o código em um arquivo chamado testPorts.sh, tornei-o executável e executei-o no terminal. E foi isso que consegui. A linha 14 é a linha com o comando NC. Alguém sabe o que estou fazendo de errado aqui e, em caso afirmativo, como faço para corrigir isso?

Tentei colocar os endereços IP entre aspas, mas com o mesmo erro. Se os endereços IP na matriz estiverem entre aspas e/ou a variável ${IP_Addresses[@]}estiver entre aspas, recebo o mesmo erro.

Responder1

Você parece querer iterar sobre oíndicesdos dois arrays - o que você pode fazer usandoindireção

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

Também seja consistente com os nomes das variáveis ​​( FILE_Nameversus FILE_NAME) e adquira o hábito de citar expansões de variáveis.

informação relacionada