1
注 - これは重複しません。 bashの出力をbash配列に変換することについては他にも質問がありますが、のいずれもインラインで実行します。インラインが必要な理由は、until
です。bashコマンドの出力を配列のインラインにネストする方法は?
digコマンドからポートを解析するコマンドuntil
を作成しようとしています。
以下は、別々の行にある作業コマンドです。
SERVER_DIG_RESULT=$(dig +noall +answer $SERVER_DNS_NAME SRV)
SERVER_STRING_ARRAY=($SERVER_DIG_RESULT)
SERVER_PORT=${SERVER_STRING_ARRAY[6]}
until nc -z $SERVER_DNS_NAME $SERVER_PORT
これに伴う問題は、DNSが最初コマンドが実行されるまでオンラインにならないかもしれないということですので、あなたはuntil
コマンドが何度もを実行したいです。
ここで私の壊れたuntilコマンド(私は試して1行に入れます)です。
until nc -z $SERVER_DNS_NAME ${$(dig +noall +answer $SERVER_DNS_NAME SRV)[6]}
私は変数置換に問題があるようです。 私の質問は:bashコマンドの出力を配列のインラインにネストする方法は?
これを試したことはありませんが、これが配列を返すのですか? '$(dig + noall + answer $ SERVER_DNS_NAME SRV)'?このようなものではいけませんか? –
コマンド置換自体は配列を提供しませんが、空白で区切られた単語は、 'SERVER_STRING_ARRAY'への代入の要素を提供します(' $ {($ +) 。 – chepner