我正在运行一些涉及管道传输到我的可执行文件的单元测试,就像这样。
cat text.txt | my_exe --options
运行这些命令,我如何获取的返回值my_exe
?即使my_exe
返回失败,返回值也会被丢弃。我假设的返回值cat
是优先的。
换种方式问,如何执行上述管道命令以给出相同的返回值:
cat text.txt && my_exe --options
谢谢!
编辑:使用传统的cmd
。
答案1
cmd
确实将管道的退出状态设置为最右侧的组件,并且其他组件(或任何组件)不被“优先考虑”甚至不被考虑。观察:
c:\temp>echo exit 42 | cmd >NUL
c:\temp>echo %errorlevel%
42
c:\temp>cmd/c echo exit 42 | cmd >NUL
c:\temp>echo %errorlevel%
42
c:\temp>cmd/c "echo exit 42 && exit 17" | cmd >NUL
c:\temp>echo %errorlevel%
42
c:\temp>cmd/c exit 17 | cmd/c exit 0
c:\temp>echo %errorlevel%
0
c:\temp>cmd/c exit 11 | cmd/c exit 22 | cmd/c exit 33
c:\temp>echo %errorlevel%
33
c:\temp>cmd/c exit 11 | cmd/c exit 22 | cmd/c echo GOOD
GOOD
c:\temp>echo %errorlevel%
0
如果您得到了不同的结果,那么您所做的一定与您在 Q 中所展示的不同,但由于我们不知道那是什么,因此不可能提出任何有用的建议。