1

注意- 这不是重复的!还有其他问题涉及将 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

这样做的问题是,在运行第一个命令之前,dns 可能不会联机dig,因此您希望该until命令dig一遍又一遍地运行。

这是我的直到命令(我尝试将其放在一行)。

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

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

4

1 回答 1

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
于 2016-08-07T13:14:26.517 回答