43

%?Zsh 包括使用转义序列在提示符中显示上一个命令的返回码/退出码的能力。

但是我想得到以下提示:

user@host ~ [%?] %

当退出代码不同于 0 并且:

user@host ~ %

当退出代码为 0 时。

如果我%?单独使用它总是显示,即使%?是 0。另外我想要方括号,但只有当退出代码不是 0 时。

最简单的方法是什么?

4

2 回答 2

67

将其添加到PS1您希望退出代码出现的位置:

%(?..[%?] )

这是一个条件表达式。如果第一个点之前的表达式为真,则输出两个点之间的部分(在这种情况下没有)。如果为假,则输出第二个点之后的部分。

例如:

PS1='%n%m %~ %(?..[%?] )%# '
于 2010-12-17T01:30:57.110 回答
18

或者,您可以:

setopt PRINT_EXIT_VALUE

始终打印显示先前返回值的换行符。

我不喜欢这个用于普通用途,但它通常对调试 shell 脚本很有用。

于 2012-10-26T19:55:11.817 回答