For 루프에서 NC를 사용하여 IP 주소가 있는 배열을 반복합니다. - 구문 오류: 잘못된 산술 연산자

For 루프에서 NC를 사용하여 IP 주소가 있는 배열을 반복합니다. - 구문 오류: 잘못된 산술 연산자

저는 IP 주소 배열을 반복하고 NC를 사용하여 각 IP 주소에서 열려 있는 포트를 검색하는 Bash 스크립트를 만드는 작업을 진행 중입니다. NC 명령만 사용하고 각 IP 주소에 대해 수동으로 명령을 입력하면 작동하지만 좋은 방법은 아닙니다. 그러나 모든 IP 주소가 포함된 어레이를 사용하면 오류가 발생합니다. 다음은 내 코드의 예입니다(예제 및 개인 정보 보호를 위해 Google 및 Microsoft의 IP 주소 사용).

#!/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_Namevs FILE_NAME)에 대해 일관성을 유지하고 변수 확장을 인용하는 습관을 들이십시오.

관련 정보