1

- これは重複ではありません。bash 出力の bash 配列への変換に関する質問は他にもありますが、インラインで行うものはありません。インラインが必要な理由は、until.

untildig コマンドからポートを解析するコマンドを作成しようとしています。

以下は、別々の行にある作業コマンドです。

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

digこれに関する問題は、最初のコマンドが実行されるまで dns がオンラインにならない可能性があるため、untilコマンドをdig何度も実行する必要があることです。

これが私の壊れたuntilコマンドです(ここで、1行にまとめてみました)。

until nc -z $SERVER_DNS_NAME ${$(dig +noall +answer $SERVER_DNS_NAME SRV)[6]}

変数置換に問題があるようです。私の質問は: bash コマンド出力を配列インラインにネストする方法は?

4

1 に答える 1

1

ステートメントの条件はuntil、1 つのコマンドに限定されません。

until SERVER_STRING_ARRAY=( $(dig +noall +answer "$SERVER_DNS_NAME" SRV)
      SERVER_PORT=${SERVER_STRING_ARRAY[6]}
      nc -z "$SERVER_DNS_NAME" "$SERVER_PORT"; do
    ...
done
于 2016-08-07T13:14:26.517 に答える