我想执行Bash中长时间运行的命令,都捕获它的退出状态,并且发球它的输出.
所以我这样做:
command | tee out.txt
ST=$?
Run Code Online (Sandbox Code Playgroud)
问题是变量ST捕获退出状态tee
而不是命令.我怎么解决这个问题?
请注意,命令长时间运行并将输出重定向到文件以便以后查看它对我来说不是一个好的解决方案.
要将stdout和stderr重定向(并附加)到文件中,同时还在终端上显示它,我这样做:
command 2>&1 | tee -a file.txt
Run Code Online (Sandbox Code Playgroud)
但是,有没有其他方法可以做到这一点,以便我获得退出状态的准确值?
也就是说,如果我测试$?
,我想看到退出状态command
,而不是退出状态tee
.
我知道我可以${PIPESTATUS[0]}
在这里使用而不是$?
,但我正在寻找另一种不需要检查的解决方案PIPESTATUS
.