1

如何在我的 bash 提示符中捕获上一个命令的退出值?我想这样做是因为我也想在我的路径中包含当前的 git 分支,并且会改变$?

我已经尝试了以下提示的很多变体(例如,围绕分配给 RETVAL 的 `、` 和 $()),但 RETVAL 在所有这些中都是空的:

PS1="\$(RETVAL=$(echo \$))\$(cd 124123)retval: $RETVAL"

里面的 cd 命令只是调用 git current branch 函数的占位符,之后我正在回显 RETVAL (这始终是一个空字符串来测试它是否被分配。

其他类似/相关的问题:

我还尝试使用这些页面上的示例在提示命令中设置 RETVAL,但提示中没有显示任何内容

4

2 回答 2

4

创建一个生成提示的函数,然后保存$?

makeprompt() { 
    status=$?
    echo "$(echo someoutput) $status"
    return $status
}

PS1='$(makeprompt) \$ '

这将为您提供命令的输出(此处为echo,但可能为git),以及先前执行的命令的退出状态。

于 2013-08-12T23:29:41.917 回答
1

来自 bash(1)

PROMPT_COMMAND
  If set, the value is executed as a command  
  prior  to  issuing  each  primary prompt.

使用它,而不是 PS1。您对 PS1 的分配会在分配时扩展一次,但不是每次显示提示时。是的,当它被展示时,会进行一些扩展,但它是有限的(并且使用 -style 替换“变量” - 再次,请参见 bash(1))。

于 2013-08-12T22:49:16.797 回答