我想执行一个命令(比如
在执行完命令后,如果我尝试访问
ls
),并对它的输出进行sed
操作,然后将stdout保存到一个变量中,像这样:OUT=$(ls | sed -n -e 's/regexp/replacement/p')
在执行完命令后,如果我尝试访问
$PIPESTATUS
数组,我只会得到0
(与$?
相同)。那么,如何同时获取$PIPESTATUS
和捕获整个管道命令的标准输出?注意:
- 如果我只执行这些管道命令而没有捕获标准输出(如
ls | sed -n -e 's/regexp/replacement/p'
),则我可以在$PIPESTATUS
中得到期望的退出状态(如0 0
) - 如果我只执行单个命令(不使用多个命令进行管道处理)并使用命令替换捕获标准输出(如
OUT=$(ls)
),则我可以在$PIPESTATUS
中得到期望的单个退出状态(与$?
相同)
$PIPESTATUS
),但有没有一种方法可以在单个执行中同时获取两者?