bash 循环直到 dig 返回

bash 循环直到 dig 返回

我正在尝试以下操作,但它似乎没有给我想要的结果,我基本上想运行 dig 直到得到响应,然后退出并继续执行脚本的其余部分。

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

答案1

你可以试试:

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

答案2

有几件事:

  1. 即使记录不存在,dig 也会返回真实结果。
 $ dig +answer non-existent-record-$(date +%F).com && echo "Shouldn't see this" 
 # => Shouldn't see this

相反,正如 Mircea 所说,使用/usr/bin/host.或者,您可以使用 来测试解析器是否返回空白[ ! -z "$(dig +short example.com.)" ]host当存在 AAAA 记录或 MX 记录时,dig 和 dig之间的行为存在非常微妙的差异,但它可能不会影响您。

  1. Fordo :代替使用/usr/bin/true

TL;DR,Mircea 的答案对我有用,但为了与众不同,这是我的看法。它的不同之处在于它每次测试都不会暂停一秒钟,这可能是也可能不是您想要的,并且即使有 AAAA 或 MX 记录也不会退出。

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

相关内容