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上。
这个说实话还是记住就好。没这种用法。
------解决方案--------------------
1) 不如直接改成
cat /etc/passwd
------解决方案--------------------while read e1 e2 e3
do
echo -e "$e1\t $e2\t $e3"
done