我已经阅读了this answer,并且最适合我正在寻找的内容,除非它错过了如何从第一个命令获取返回值。这样做会给出命令tee
的返回值代码,这不是我正在寻找的。 p>
示例:
ls /path/to/dir 2>&1 | tee foo.txt
echo $?
$?
将显示ls
的代码。
我如何实现上述目标?
编辑:谢谢你的回答,Benjamin W.!但是,我应该更具体一点:我需要bash 提示(不是脚本)来返回它;因为返回只能从脚本或函数的角度来看,我最好的办法是将它包装在一个函数中,然后。这是对的吗?
编辑2:这就是我要找的东西:
fn() {
ls | tee foo.txt return ${PIPESTATUS[0]}
return ${PIPESTATUS[0]}
}
fn
答案 0 :(得分:2)
有一个环境变量PIPESTATUS
:
一个数组变量(参见Arrays),其中包含最近执行的前台管道(可能只包含一个命令)中的进程的退出状态值列表。
因此ls
的退出状态将在${PIPESTATUS[0]}
。