LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2145|回复: 13

shell在有向标准错误输出的命令吗?[基本解决]

[复制链接]
发表于 2004-4-18 09:06:46 | 显示全部楼层 |阅读模式
向标准输出设备写用echo
那写标准错误输出呢?
发表于 2004-4-18 09:53:35 | 显示全部楼层
搜索标准错误或重定向
 楼主| 发表于 2004-4-18 10:13:23 | 显示全部楼层
最初由 javalee 发表
搜索标准错误或重定向

没找到!
我不要重定向
我要 向标准错误输出  以利于重定向
发表于 2004-4-18 10:21:16 | 显示全部楼层
在shell里,默认的标准错误输出的描述符是2,
cmd 2>error.log
 楼主| 发表于 2004-4-18 17:14:07 | 显示全部楼层
谢谢版主大哥!
是我没讲清楚,
我的意思是:
echo "message" 向标准设备输出;
echo2 "mesage"向标准备出错设备输出;
那, echo2是什么??
发表于 2004-4-18 17:16:48 | 显示全部楼层
最初由 folklore 发表
谢谢版主大哥!
是我没讲清楚,
我的意思是:
echo "message" 向标准设备输出;
echo2 "mesage"向标准备出错设备输出;
那, echo2是什么??

没有这个命令。
 楼主| 发表于 2004-4-18 17:50:14 | 显示全部楼层
菜鸟大哭中
这么常用功能的命令竟没有!!
也是一个大的漏失了
发表于 2004-4-18 17:53:30 | 显示全部楼层
最初由 folklore 发表
菜鸟大哭中
这么常用功能的命令竟没有!!
也是一个大的漏失了

你很奇怪哦。
重定向到文件描述符2不就行了嘛~~~
echo "message" 1>&2
发表于 2004-4-18 17:57:05 | 显示全部楼层
最初由 folklore 发表
菜鸟大哭中
这么常用功能的命令竟没有!!
也是一个大的漏失了

在linux里,所有的设备都以文件的形式存在,因此,你所说的出错设备就可以用一个文件来表示:
cmd 2>error.log
如果cmd执行中有出错信息,那么通过错误输出重定向,把出错信息重定向到文件error.log中,如:
/home/javalee/test#(make;date) 2>error.log
日  4月 18 18:02:36 CST 2004
/home/javalee/test#cat error.log
make: *** No targets specified and no makefile found.  Stop.
/home/javalee/test#
ps:建议你多看看shell入门的贴子,在置顶区
 楼主| 发表于 2004-4-20 18:46:03 | 显示全部楼层
最初由 home_king 发表
你很奇怪哦。
重定向到文件描述符2不就行了嘛~~~
echo "message" 1>&2


谢了!这儿的&是又一个转义字符吧?
但还有问题:
$cat scrpt
echo "normal message"
echo "error message" 1>&2
$scrpt
normal message
error message
$scrpt >t
error message.
$scrpt 2>t
normal message.
这是正常的
但:
我在程序中使用了if  [ !  -z $1 ]就不正常了:
 if [ -z $1 ]
  then
    echo "error message" 1>&2
    exit
  if
echo "it is  a test"
结果,我用
执行。
结果还是有it is a test输出, 不用 1>&2则不会有此问题,&&&&yyYYYY
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表