当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 2 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 有关重定向的疑问
帖子发表于 : 2009-05-20 22:53 

注册: 2009-05-06 16:22
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
大家都知道重定向的顺序很重要,比如以下两个命令:
1) cat 0< shift 1>1.out 2>2.out
2)cat 2>2.out 0<shift 1>1.out
在此,当前目录下是没有shift这个文件或目录,但是两个命令的运行结果是不一样的。
1)的运行结果是,错误信息仍然是输出到屏幕上,书上的解释是说在shell发现shift不存在时,此时的标准错误还没有从定向到2.out。
2)的运行结果是,错误的信息写到了2.out上,书上的解释是说在shell发现shift不存在时,标准错误输出已经从定向到2.out。
这个解释似乎是正确的。
但是当执行3)cat shift 1>1.out 2>2.out时为什么会把错误输出到2.out呢???个人觉得,当shell执行到shift时,此时也已经
发现shift不存在啊,并且此时的标准错误输出也同样没有重定向到2.out呀,那它为什么会输出到2.out呢??
本人还有一个问题,像以上这些命令,它是一条命令,在执行的时候很显然是一步一步执行的,那shell是否要先编译再执行呢?还是逐步的解释这些命令呢?个人理解是逐步解释这些命令,因为只有逐步解释这些命令才会有1)和2)执行上的差别,但是这同样与3)的执行结果相矛盾。
如果是逐步解释的话,那么解释到cat shift时,内核会在当前目录下查找shift,此时就会有错误啊,那后面的从定向根本不会执行阿。
请各位大虾帮忙!!!!!先谢了!!!!


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 有关重定向的疑问
帖子发表于 : 2009-05-20 22:56 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
cat shift 1>1.out 2>2.out 时
发现 shift 不存在的是 cat, shell 只管传参数


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 2 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译