PIPESTATUS 变量在运行管道后不会返回所有退出代码

问题描述 投票:0回答:1

我使用 PIPESTATUS 变量来访问管道的所有退出代码: echo "hello" |厕所-w。现在,由于命令成功运行,当我在脚本或终端中运行管道后立即使用 echo ${PIPESTATUS[*]} 访问时,PIPESTATUS 数组会返回 0 0 。 但是,当我尝试使用以下代码单独打印它们时: echo "${PIPESTATUS[0]"---- 打印输出 0 echo "${PIPESTATUS1"---- 不打印任何内容,空白终端

整个代码是:

#!/bin/bash
echo "hello" | wc -w
echo "${PIPESTATUS[0]}"
echo "${PIPESTATUS[1]}"

如何解决这个问题?以及为什么不可能以这种方式访问元素。它是一个数组,所以它应该是可能的。 PIPESTATUS 与易失性或其他什么有关系吗?

这是图像输出:

arrays bash printing scripting pipestatus
1个回答
0
投票

PIPESTATUS
的内容会在每个命令后更新。
echo "${PIPESTATUS[0]}"
是一个命令。您正在寻找这样的东西:

echo "hello" | wc -w
status=("${PIPESTATUS[@]}")
echo "${status[0]}"
echo "${status[1]}"
© www.soinside.com 2019 - 2024. All rights reserved.