读书人

IFS=:冒号分隔的有关问题

发布时间: 2013-01-28 11:49:56 作者: rapoo

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

读书人网 >UNIXLINUX

热点推荐