我有一个简单的脚本可以使用 SSH 在远程服务器上创建目录:
while read memberName; do
ssh ${serverPath} "mkdir -p ${filePath}"
wait
done < sqlRes.txt
(我已经简化了一点 - 这些变量确实存在并且很好)。
如果我将每个 SSH 调用设置为后台作业(使用 &),效果会更好,但不完全(例如,它应该创建 200 个目录,但只执行 170 个)。
实际上,它在 sqlRes.txt 中的第一个条目之后退出循环,没有错误消息并且返回成功状态。
我尝试过 sleep 和等待命令,但都没有帮助。
我猜可能存在子 shell 的限制,但我认为“等待”应该确保每个 shell 都已关闭,然后再尝试下一个?
请问有什么想法吗?
仅供引用 - Linux RedHat 中的 ksh
最佳答案
抱歉 - 经过更多搜索后找到了答案(ssh 是交互式的并接受所有输入。更改为“ssh -n”并且一切正常)。
关于ssh - 在 while 循环中使用 SSH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15135521/