![](/img/trans.png)
[英]Bash how to execute all commands but return exit value of previous command
[英]Capturing exit value of previous command in bash prompt
如何在bash提示符中捕获上一个命令的退出值? 我想这样做是因为我也想在路径中包括当前的git分支,并且这会改变$?
我已经在下面的提示中尝试了很多变体(例如,对RETVAL的赋值周围的`,`和$()),但是RETVAL在所有提示中均为空:
PS1="\$(RETVAL=$(echo \$))\$(cd 124123)retval: $RETVAL"
里面的cd命令只是对git current分支函数的调用的占位符,之后我回显RETVAL(这始终是一个空字符串,以测试是否被分配了。
其他类似/相关的问题:
我也曾尝试使用类似这些页面上的示例在提示命令中设置RETVAL,但提示中没有任何显示
使一个函数生成您的提示,并保存$?
:
makeprompt() {
status=$?
echo "$(echo someoutput) $status"
return $status
}
PS1='$(makeprompt) \$ '
这将为您提供命令的输出(此处为echo
,但可以为git
)以及先前执行的命令的退出状态。
来自bash(1)
PROMPT_COMMAND
If set, the value is executed as a command
prior to issuing each primary prompt.
使用它代替PS1。 在分配时,您对PS1的分配会扩展一次,但不会在每次显示提示时扩展。 是的,当将其浸入水中时,会进行一些扩展,但是它受到限制(并且使用-style替代“变量”-再次参见bash(1))。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.