我有一个 shell 脚本,我在其中包装了一个命令(mvn clean install),以将输出重定向到一个日志文件。
#!/bin/bash ... mvn clean install $@ | tee $logfile echo $? # Does not show the return code of mvn clean install
现在,如果mvn clean install因错误而失败,我希望我的包装器 shell 脚本也因该错误而失败。但是由于我将所有输出通过管道传输到 tee,我无法访问 的返回码mvn clean install,所以当我$?之后访问时,它始终为 0(因为 tee 成功)。
mvn clean install
$?
我尝试让命令将错误输出写入单独的文件并随后检查,但 mvn 的错误输出始终为空(似乎只写入标准输出)。
如何保留返回代码mvn clean install但仍将输出传输到日志文件?
由于您正在运行bash,您可以使用它的$PIPESTATUS变量而不是$?:
bash
mvn clean install $@ | tee $logfile echo ${PIPESTATUS[0]}