日期:2014-05-16  浏览次数:20908 次

IFS=:冒号分隔的问题
前提: cat /etc/passwd > passwd.txt
请教一下,下面的1)为什么没有得到想要的结果???

1)执行后,没有得到想要的结果
#! /bin/sh

SAVEDIFS=$IFS
IFS=:
while read e1 e2 e3 
do
    echo -e "$e1\t $e2\t $e3"
done < `cat /etc/passwd`
IFS=$SAVEDIFS


2)执行后,得到想要的结果

#! /bin/sh

SAVEDIFS=$IFS
IFS=:
while read e1 e2 e3 
do
    echo -e "$e1\t $e2\t $e3"
done < passwd.txt 
IFS=$SAVEDIFS

------解决方案--------------------
你这个问题,我觉得应该从shell语法上来讲。
输入重定向<的右边一般是文件或者文件描述符,,
遇到过这两种用法:
<file   这个就是你的2写法。
exec 6<&1   这种只是将描述符6绑定到1上。

这个说实话还是记住就好。没这种用法。


------解决方案--------------------
引用:
前提: cat /etc/passwd > passwd.txt
请教一下,下面的1)为什么没有得到想要的结果???

1)执行后,没有得到想要的结果
#! /bin/sh

SAVEDIFS=$IFS
IFS=:
while read e1 e2 e3 
do
    echo -e "$e1\t $e2\t $e3"
done < `cat /e……


1) 不如直接改成 
cat /etc/passwd
------解决方案--------------------
while read e1 e2 e3
do
     echo -e "$e1\t $e2\t $e3"
done