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 は、レコードが存在しない場合でも真の結果を返します。
 $ 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

関連情報