<分区>
我有一个 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 回显行完成所证明),它只是没有运行任何进一步的迭代。
此外,我已经确认它不仅仅是忽略显示其他迭代的输出。它从不在其他机器上执行任何操作。