Bash根据索引循环分配变量命令输出

Bash根据索引循环分配变量命令输出,bash,Bash,我有这样的想法: #!/bin/bash #numero di nodi cache della edge network NCACHES=$1 #creo vm manager (dello swarm) e balancer docker-machine create -d virtualbox manager docker-machine create -d virtualbox balancer #creo le restanti NCACHES-1 VM for i in {0.

我有这样的想法:

#!/bin/bash

#numero di nodi cache della edge network
NCACHES=$1

#creo vm manager (dello swarm) e balancer
docker-machine create -d virtualbox manager
docker-machine create -d virtualbox balancer

#creo le restanti NCACHES-1 VM
for i in {0..NCACHES-1}
do 
    echo "Creating VM $i"
    docker-machine create -d virtualbox worker$i
done

docker-machine create -d virtualbox backend

IPManager="$(docker-machine ip manager)"
echo "IP VM swarm manager=$IPManager"

IPBalancer="$(docker-machine ip balancer)"
echo "IP VM balancer=$IPBalancer"

for i in {0..NCACHES-1}}
do
    IPCache$i="$(docker-machine ip worker$i)"
    echo "IP worker$i=IPCache$i"
done
我希望在最后一个循环中,我不知道如何将I索引传递给
“$(docker machine ip worker$I)”
命令,然后将
IPCache$I
设置为该返回值。然后我不知道如何回显所有这些IP地址。

使用数组

IPCache=()

for ((i = 0; i < NCACHES; i++))
do
    IPCache+=("$(docker-machine ip worker$i)")
    echo "IP worker$i=${IPCache[i]}"
done
IPCache=()
对于((i=0;i
使用数组

IPCache=()

for ((i = 0; i < NCACHES; i++))
do
    IPCache+=("$(docker-machine ip worker$i)")
    echo "IP worker$i=${IPCache[i]}"
done
IPCache=()
对于((i=0;i
为什么不将IPCache设置为数组?然后,您可以只使用一个IPCache变量并设置要查找的
IPCache[$i]
,但我支持Charles Duffy的建议,即在{0..NCACHES-1}
中为i使用数组!括号扩展将发生在变量扩展之前您没有注意到{0..NCACHES-1}中i的
有问题吗?@Aaron,抱怨道:建议将ABS作为参考——这是bash的W3Schools,充满了过时的信息和糟糕的实践示例。我强烈建议你,为什么不把IPCache做成一个数组呢?然后,您可以只使用一个IPCache变量并设置要查找的
IPCache[$i]
,但我支持Charles Duffy的建议,即在{0..NCACHES-1}
中为i使用数组!括号扩展将发生在变量扩展之前您没有注意到{0..NCACHES-1}中i的
有问题吗?@Aaron,抱怨道:建议将ABS作为参考——这是bash的W3Schools,充满了过时的信息和糟糕的实践示例。我强烈建议。