shell - 跳过节点时的 shell 迭代
问题描述
我有 20 个节点,其中 5 个没有 ssh(这是预期的)。这些值是从源中动态提取的。下面是我试图检查他们是否能够 SSH 的代码:
for skip_node in "${skip_nodes[@]}"
do
for node in "${nodes[@]}"
do
if [[ $node != $skip_node ]]; then continue; fi
<I have my ssh logic working here>
if [ $? -ne 0 ]; then
UNABLE_TO_SSH+=" ${node}"
(( ERROR_COUNT += 1 ))
fi
done
done
此脚本失败,因为数组节点再次包含那些在 skip_nodes 中的节点。关于我应该如何解决这个问题的任何帮助?
解决方案
我成功地做到了这一点。我减去了 2 个列表,然后迭代了最终列表以进行 SSH 检查。
nodes=($(comm -3 <(printf "%s\n" "${nodes[@]}" | sort) <(printf "%s\n" "${skip_nodes[@]}" | sort) | sort -n))
for node in "${nodes[@]}"
do
<my code for checking ssh>
if [ $? -ne 0 ]; then
UNABLE_TO_SSH+=" ${node}"
(( ERROR_COUNT += 1 ))
fi
done
推荐阅读
- python - 如何将电报频道中的消息保存为变量
- python - 试图从 MySQL 获取数据
- javascript - 以百分比而不是像素设置顶部和左侧
- php - 如何优化我的控制器的一部分,这将在其他几个中重复
- amazon-web-services - 在 REST api 中验证 jwt 令牌
- php - Windows Server 2012r2 虚拟机上的 Yii2
- macos - cd:权限被拒绝:在 Mac OS 终端上下载
- flutter - 如何在颤动的 SliverAppBar 下创建一条线?
- c++ - 使用唯一的预处理器进行字符串连接?
- ios - 我的 iOS UIScrollView 仅在屏幕外刷新