【发布时间】:2016-12-13 08:34:37
【问题描述】:
注意 - 这不是重复的!还有其他问题涉及将 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 命令(我尝试将它放在一行上)。
until nc -z $SERVER_DNS_NAME ${$(dig +noall +answer $SERVER_DNS_NAME SRV)[6]}
我似乎遇到了变量替换的问题。 我的问题是:如何将 bash 命令输出嵌套到内联数组中?
【问题讨论】:
-
没试过,但是,你确定这会返回一个数组吗?
$(dig +noall +answer $SERVER_DNS_NAME SRV)?不应该是这样的吗?${($(dig +noall +answer $SERVER_DNS_NAME SRV))[6]} -
命令替换本身不提供数组,但其以空格分隔的单词为分配给
SERVER_STRING_ARRAY提供了元素。
标签: arrays bash dig variable-substitution