gpt4 book ai didi

shell - 过滤 stderr 并获取初始返回码

转载 作者:行者123 更新时间:2023-12-05 05:25:10 33 4
gpt4 key购买 nike

在 shell 脚本中,我必须运行一个命令,我需要为其确定返回码是什么,但事实证明命令的输出转到 stderr 并且还输出用户的密码(不幸的是命令的一个参数;不好,我知道)。

我至少想过滤掉显示的密码。

cmd ${OPTIONS}
RETURNCODE=$?

给我命令的返回码

cmd ${OPTIONS} 3>&1 1>&2 2>&3 | sed "s:${PASSWD}:******:"
RETURNCODE=$?

成功过滤 PASSWD 但返回码始终为 0 - sed 的返回码,而不是初始命令。

有什么技巧吗?

最佳答案

有几种技术。在 bash 中,您可以检查数组 PIPESTATUS。对于可移植解决方案,您可以执行以下操作:

RETURNCODE=$({ { cmd $OPTIONS 3>&1 1>&2 2>&3; echo $? >&4; } | sed ... >&2; } 4>&1 )

这具有保留 cmd 行为的良好副作用,并且 sed 的输出以与 cmd 的输出相同的方式进入 stderr。 (这是否真的可取是一个不同的问题!)

关于shell - 过滤 stderr 并获取初始返回码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32127611/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com