我正在尝试以下操作,但它似乎没有给我想要的结果,我基本上想运行 dig 直到得到响应,然后退出并继续执行脚本的其余部分。
until dig +answer example.com > /dev/null ;do :; done
答案1
你可以试试:
until host example.com > /dev/null ;do sleep 1; done
答案2
有几件事:
- 即使记录不存在,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之间的行为存在非常微妙的差异,但它可能不会影响您。
- For
do :
代替使用/usr/bin/true
:
TL;DR,Mircea 的答案对我有用,但为了与众不同,这是我的看法。它的不同之处在于它每次测试都不会暂停一秒钟,这可能是也可能不是您想要的,并且即使有 AAAA 或 MX 记录也不会退出。
until [ ! -z "$(dig +short example.com)" ]; do true; done