dig가 반환될 때까지 bash 루프

dig가 반환될 때까지 bash 루프

다음을 시도하고 있지만 원하는 결과를 얻지 못하는 것 같습니다. 기본적으로 응답을 받을 때까지 dig를 실행한 다음 종료하고 나머지 스크립트를 계속 진행하고 싶습니다.

until dig +answer example.com > /dev/null ;do :; done 

답변1

당신은 시도 할 수 있습니다:

until host example.com > /dev/null ;do sleep 1; done

답변2

몇 가지:

  1. dig는 레코드가 존재하지 않는 경우에도 true 결과를 반환합니다.
 $ dig +answer non-existent-record-$(date +%F).com && echo "Shouldn't see this" 
 # => Shouldn't see this

대신 Mircea가 말했듯 이 /usr/bin/host. AAAA 레코드 또는 MX 레코드가 존재할 때 dig와 dig 사이의 동작에는 매우 미묘한 차이가 있지만 아마도 영향을 미치지는 않을 것입니다.[ ! -z "$(dig +short example.com.)" ]host

  1. 대신 do :다음을 사용하십시오 /usr/bin/true.

TL, DR, Mircea의 대답은 나에게 효과적이었지만, 다르기 때문에 여기에 내 의견이 있습니다. 테스트할 때마다 1초 동안 멈추지 않는다는 점이 다릅니다. 이는 원하는 것일 수도 있고 아닐 수도 있으며, AAAA 또는 MX 레코드가 있어도 종료되지 않습니다.

until [ ! -z "$(dig +short example.com)" ]; do true; done

관련 정보