免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2207 | 回复: 6
打印 上一主题 下一主题

请教一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-16 16:29 |只看该作者 |倒序浏览
#cat std.sh
#!/bin/sh
echo “stdout”
echo “stderr” >&2

#/bin/sh std.sh 2>&1 > /dev/null
stderr

为什么结果是这个?
在std.sh的代码中无论写多少行echo,结果总是第二行的结果,why?

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-08-16 16:34 |只看该作者
/bin/sh std.sh >/dev/null 2>&1

论坛徽章:
0
3 [报告]
发表于 2007-08-16 16:39 |只看该作者
因为你的最终标准的1输出都重定向为/dev/null了
当然只能显示echo “stderr” >&2 这个从2输出的内容了

论坛徽章:
0
4 [报告]
发表于 2007-08-17 16:16 |只看该作者
把程序改成
#!/bin/sh
echo “stdousdfsdft”
echo “stdesdfsdfsfrr” >&2
echo "ljlfjsldjf"

执行过的结果依然是显示第二行,why?

论坛徽章:
0
5 [报告]
发表于 2007-08-17 16:36 |只看该作者
不是程序的问题,是你重定向的问题...

论坛徽章:
0
6 [报告]
发表于 2007-08-17 20:47 |只看该作者
楼上的,请明示

论坛徽章:
0
7 [报告]
发表于 2007-08-18 20:28 |只看该作者
./std.sh 2>&1 > /dev/null

step:
{
2>&1                           2->1 1->1
1>/dev/null                  2->1 1->/dev/null
}
{
echo “stdout”       2->1 1->/dev/null   // no echo
echo “stderr” >&2    2->1 1->2           // echo to ??? , but echo does exist .
}

最后一行我也有疑问
如果设置了2>&1 >&2 ,那么应该是一个deadlock,除非有中间量.

$echo "ddd" >&2 2>&1
ddd
$echo "ddd"  2>&1 >&2
ddd
$

@#!@$, 有没有办法看到是哪个FD 输出的?
如:
$echo "ddd"
1:ddd

[ 本帖最后由 iamkey9 于 2007-8-18 20:40 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP