【发布时间】:2016-02-23 19:44:07
【问题描述】:
我有一个 bash 脚本,它可以获取正在运行的 selenium 节点,获取它们的 ID,并将 SSH 连接到它们中以执行配置任务。
#!/bin/bash
# retrieve list of running vagrant machines, filter them to selenium nodes, and
# process provisioning for each
vagrant global-status --prune | grep "selenium_node" | while read -ra line ; do
echo -e "\033[32mBEGININNG ${line[1]} PROVISIONING\033[37m"
# adding this statement causes the loop to exit after 1 iteration
vagrant ssh ${line[0]} -- "
echo 'it runs'
"
echo -e "\033[32mEND ${line[1]} PROVISION\033[37m"
done
我的问题是运行vagrant ssh 会导致循环在第一次迭代后终止。我通过删除 'vagrant ssh' 确认了这一点,结果是 BEGINNING 和 END echo 命令在每次迭代中都成功运行(在我的情况下 - 两次迭代)。
奇怪的是,循环确实完成了它的第一次迭代(正如 END 回显线完成所证明的那样),它只是没有运行任何进一步的迭代。
另外,我已经确认这不仅仅是忽略显示其他迭代的输出。它从不在其他机器上执行任何操作。
【问题讨论】:
标签: linux bash shell ssh vagrant