“while”的“read”方法有什么问题?
本文可自由转载,但请遵循“署名-非商业用途-保持一致”的创作共用协议。 永久链接:JoeCen's 小猫窝-----------------------------
本来我在shell编程里习惯用while来进行循环,现在看来要改一改了。
这两天写一个脚本的时候,发现while不能与ssh结合使用:
比如:
-------------------------------------------------------------------------
#!/bin/sh
while read HOST
do
ssh -l joecen -oStrictHostKeyChecking=no $HOST df
done < host
-------------------------------------------------------------------------
host文件是IP,每一行一个IP。
运行脚本时发现,第一个ssh正常执行后脚本自动退出(停止在read HOST上)。
而改为使用“for”的话,一切正常:
-------------------------------------------------------------------------
#!/bin/sh
for HOST in $(<host)
do
ssh -p -l joecen -oStrictHostKeyChecking=no $HOST df
done
-------------------------------------------------------------------------
听同事说,可能是“while”使用的read的方法有问题。不知是否有人知道原因呢?