首页 > 解决方案 > zsh:获取最后提示命令的状态?(在函数中获取 `%?` 的值)

问题描述

我想获取最后一个提示执行的命令的状态,提示扩展中会是什么%?,但我想在函数中获取它。(为什么?我喜欢%?提示中的想法,但认为通过将其呈现为不仅仅是数字的东西来修饰它会很好:“EX_USAGE”而不是“64”或“SIGILL”而不是“ 132”。这意味着将值传递%?给函数以生成出现在提示中的文本。)

显而易见的答案是print -P %?,但它不起作用:它返回与 相同的内容$?,即在任何地方执行的最后一个命令的状态,包括提示符的内部命令替换。毫不奇怪,%扩展标志也有同样的问题。(我不确定这是否是一个错误,或者它是否按设计工作。)我可以使用一个precmd函数来保存$?全局,但前提我可以保证它在其他任何事情之前被调用,这不是我的承诺做起来很舒服。

有什么建议么?zsh 显然具有我想要的值,因为它在即时百分比扩展中使用它,但我该如何获得呢?如果解决方案需要在一个由提示替换调用的函数中,那很好,因为这就是我已经在做的事情,但如果它在其他地方工作,则可以加分。如果它有所作为,我使用的是 zsh 5.3。

标签: zsh

解决方案


推荐阅读