【发布时间】:2017-11-01 07:17:06
【问题描述】:
我有这样的事情:
#!/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 做成一个数组呢?然后你可以只有一个 IPCache 变量并设置
IPCache[$i] -
您正在寻找 variable indirection,但我赞同 Charles Duffy 使用数组代替的建议
-
for i in {0..NCACHES-1}永远不会工作!大括号扩展将发生在之前变量扩展 -
您没有注意到
for i in {0..NCACHES-1}有问题? -
@Aaron, grumble 回复:建议将 ABS 作为参考——它是 bash 的 W3Schools,充满了过时的信息和不良做法的例子。我强烈建议使用the BashFAQ #6 section on indirect assignment。
标签: bash