원격 시스템을 ping하는 Bash 스크립트가 중단됩니다.

원격 시스템을 ping하는 Bash 스크립트가 중단됩니다.

ping함수가 하나만 있는 bash 함수라는 파일이 있습니다 .

#!/usr/bin/env bash

ping() {
  ping -c 1 $i.local
}

이 파일은 bash라는 다른 파일에 의해 로드되며 pingerping 기능을 사용하여 여러 원격 컴퓨터에 연결을 시도합니다.

#!/usr/bin/env bash

. /home/ping #load ping function

REMOTES=('remote1' 'remote2' 'remote3')

for i in "${REMOTES[@]}"; do

    ping $i

done

실행하면 ./pingerI할 때까지 멈춥니다. 명령줄을 수동으로 CTRL-C입력하면 ping -c 1 remote1.local원격 컴퓨터에 성공적으로 ping을 보낼 수 있습니다. 스크립트에 어떤 문제가 있나요?

편집: 함수 이름을 "ping"으로 지정하는 데 문제가 있는 것으로 나타났습니다. 함수 이름이 다른 것으로 지정되면 제대로 작동하는 것 같습니다.

답변1

문제는 함수 이름을 "ping"으로 지정하는 데 있다는 것을 알았습니다. 함수 이름이 다른 것으로 지정되면 제대로 작동하는 것 같습니다.

#!/usr/bin/env bash

pingRemote() {
  ping -c 1 $i.local
}

.

#!/usr/bin/env bash

. /home/ping #load ping function

REMOTES=('remote1' 'remote2' 'remote3')

for i in "${REMOTES[@]}"; do

    pingRemote $i

done

관련 정보