关于执行rsh后while不能循环的问题

今天在写代码中遇到一个问题如下:
数据文件a.data的内容如下:    111 aaa    bad   172.16.101.10
                                               222 dsd    klsd   172.16.101.11 .........
现在程序如下:
   cat a.data | while read id str1 str2 ip
       do
            rsh ${ip} ps -ef | grep nmc | grep -v grep
            .....
       done
但结果只执行了一次,即只执行了IP为172.16.101.10,后来到网上查资料,的确用while时执行rsh会对循环有影响,后改进如下:
    for param in $(cat a.data|nawk '{print $4}')
       do
             rsh ${ip} ps -ef | grep nmc | grep -v grep
            .....
        done
经过改进,程序是可以进行多次循环,while中出现的问题也没有了,但是如果我在循环体中要用到其它的字段值却取不到,因为for中只能取一个变量,nawk中只取了$4.后来在网上查到一个好方法如下:
    exec 3<a.data
   while read id str1 str2 ip<&3
       do
             rsh ${ip} ps -ef | grep nmc | grep -v grep
            .....
        done
这样就可以把所有的字段读出来,而且在while的程序体内可以用rsh来执行.

你可能感兴趣的:(关于执行rsh后while不能循环的问题)