While循环中read问题
2023年4月1日 · 29 字 · 1 分钟 · shell
while read 循环问题
shell脚本中,while read 文件控制循环的时候,出现只循环一次就退出主循环的问题,后来一番搜索才发现在while主结构中有其他的命令也读取输入缓冲区,所以导致后来read已经没记录可读了。
解决办法:
-
while read之前自行分配文件描述符
exec 3<${readfile} while read -u3 xxxx do command...... done exec 3<&-
-
把也要读缓存的命令的标准输入重定向
#例如: ssh xxxxxx </dev/null #或者 ssh -n xxxxx