LinuxSir.cn,穿越时空的Linuxsir!

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

请问如何得到管道中任何一个失败的命令

[复制链接]
发表于 2003-9-23 18:11:01 | 显示全部楼层 |阅读模式
在 Bash 中
cmd1 | cmd2 | cmd3

exit status 总是 cmd3 的返回结果,
但是我这样任何一个命令返回非零值,就认为整个管道失败。

如:

if cat somefile | grep "abc" | awk '{ print $2 }'; then
   print "error"
fi

由于 awk 总是返回 0 , 所以如果 somefile 中没有 abc 的字样,
那么还是成功的,不会打印 error
我想要的结果是任意一个命令出错,无论是 cat , grep , 还是awk
都打印 error.

请高手指点
发表于 2003-9-23 20:44:37 | 显示全部楼层
每一步出错都有提示的,这就是把出错信息改为 "error"了。

不懂,关注。
发表于 2003-9-25 10:08:54 | 显示全部楼层
命令的退出状态总是以最后一个的!另外,grep如果出错也是不报警的!,所以你可以这样:
  1. [/home/javalee/myshell]if cat urfile |grep abc
  2. > then awk '{print $2}'
  3. > else
  4. > echo "Error!"
  5. > fi
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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