如何在bash提示符中捕获上一个命令的退出值?我想这样做,因为我也希望在我的路径中包含当前的git分支,并且更改$?
我在以下提示上尝试了很多变体(例如,对RETVAL赋值的`,`和$()),但RETVAL在所有这些中都是空的:
PS1="\$(RETVAL=$(echo \$))\$(cd 124123)retval: $RETVAL"
cd命令里面只是一个占位符,用于调用git当前分支函数,之后我回显RETVAL(如果它被赋值,这总是一个空字符串来测试。
其他相似/相关的问题:
我也尝试使用这些页面上的示例在提示命令中设置RETVAL,但提示中没有显示任何内容
答案 0 :(得分:3)
创建一个生成提示的函数,然后保存$?
:
makeprompt() {
status=$?
echo "$(echo someoutput) $status"
return $status
}
PS1='$(makeprompt) \$ '
这将为您提供命令的输出(此处为echo
,但可能为git
),以及先前执行的命令的退出状态。
答案 1 :(得分:0)
来自bash(1)
PROMPT_COMMAND
If set, the value is executed as a command
prior to issuing each primary prompt.
使用它,而不是PS1。您的PS1分配在分配时会扩展一次,但不会在每次显示提示时展开。是的,当它完成时,会进行一些扩展,但它是有限的(并且使用样式替换"变量" - 再次,请参阅bash(1))。