如何将bash命令输出嵌入到内联数组中?

时间:2016-08-07 13:06:15

标签: arrays bash dig variable-subsitution

注意 - 这不重复!还有其他一些问题涉及将bash输出转换为bash数组 - ,但它们都没有内联 。您需要内联的原因是until

我正在尝试编写一个until命令,用于从dig命令解析端口。

以下是单独行上的工作命令。

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 nc -z $SERVER_DNS_NAME ${$(dig +noall +answer $SERVER_DNS_NAME SRV)[6]}

我似乎遇到了变量替换的问题。 我的问题是:如何将bash命令输出嵌套到内联数组中?

1 个答案:

答案 0 :(得分:1)

until语句的条件不限于单个命令。

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