IFS=:冒号分隔的问题

古布 2013-01-19 04:59:12
前提: 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
...全文
162 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cody2k3 2013-01-20
  • 打赏
  • 举报
回复
引用 楼主 banquet 的回复:
前提: 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
fdl19881 2013-01-19
  • 打赏
  • 举报
回复
你这个问题,我觉得应该从shell语法上来讲。 输入重定向<的右边一般是文件或者文件描述符,, 遇到过这两种用法: <file 这个就是你的2写法。 exec 6<&1 这种只是将描述符6绑定到1上。 这个说实话还是记住就好。没这种用法。

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧