以下を試していますが、目的の結果が得られないようです。デフォルトでは、応答を受け取るまで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
。 AAAA レコードまたは MX レコードが存在する場合、dig と dig の間の動作には非常に微妙な違いがありますが、おそらく影響はありません。[ ! -z "$(dig +short example.com.)" ]
host
- 代わりに
do :
、以下を使用してください/usr/bin/true
。
TL、DR、Mirceaの答えは私にとって効果的でしたが、異なるので、ここに私の意見があります。テストするたびに1秒間停止しないことが異なります。これは必要なものでも、そうでない場合もあり、AAAA または MX レコードがあっても終了しません。
until [ ! -z "$(dig +short example.com)" ]; do true; done