rt
管道符前面的命令错误时,后面命令还会执行吗, 还是会直接报错?
管道会将前面命令的标准输入当作后面命令的标准输入。一般程序错误时是没有标准输出的,其错误信息会送到标准错误输出。
通常shell会启动前一个程序,并通过系统调用读取它的输出,再通过系统调用启动后一个程序,通过管道向后一个程序的标准输入进行输出。出错时如何处理应该是依照各shell实现而定。bash中是后续程序仍然执行,但不会获得任何输入。
所以后一个程序会执行,且你应该能在屏幕上看到前一个程序的错误输出。
另外,一般整个管道的返回状态是最后一个命令的退出状态。