即使成功,是否有可能“哄骗”任意核心 *nix 实用程序返回非零退出状态?

即使成功,是否有可能“哄骗”任意核心 *nix 实用程序返回非零退出状态?

我正在使用 Connectwise Automate(以前称为 LabTech)在远程系统上运行 bash 脚本并执行 bash 命令。这些系统都是Linux和MacOS。 Connectwise Automate (CWA) 对于 *nix 系统有一些特殊的行为,其中如果命令或表达式以状态代码 0 退出,则所有输出,无论流(stdout 或 stderr)如何,都将替换为单词“OK”。当返回非 0 退出状态时,输出将正确显示在 CWA 的远程终端和脚本输出中。我还没有收到输出替换行为基于退出代码的明确确认,但我相信它很有可能。

对于一个简单的示例,echo "Test"返回OK,而ls ./no/such/directory产生适当的异常。这是 CWA 的一个长期存在的问题,如果不将命令输出传输到磁盘上的文件并使用 CWA 特有的函数读取该文件,与供应商的合作不会产生任何解决方法或积极的结果。然而,这会产生不一致的结果,因为写入文件的命令输出通常只是OK.


我尝试过的

我发现并尝试了许多可能的解决方案。我发现问题,专门针对less,并且依赖于less-K论点。我尝试调整部分解决方案,但没有成功调用bash -ctrap,尽管我的实现可能不正确。我还尝试了类似 的操作echo "Test" && false,它返回OK,可能(在我看来)是由于第一个命令在评估 之前以退出代码 0 返回false


问题重述

是否可以“哄骗”(可以这么说)任意实用程序,特别是通过bash或调用时sh,以我选择的退出状态返回,或以其他方式返回任何非 0 退出状态,并且仍然让给定实用程序的输出命中 stdout/标准错误?

相关内容