6

我遇到了这个奇怪的问题,我的退出状态总是返回 0,即使它没有成功执行。

我想使用以下代码在提示符上输出退出状态:

function status() {
    echo $?
}

export PS1="\$(status)>"

当我运行它时,我得到以下输出

 0❯ pwd
/Users/tringuyen
 0❯ ad
bash: ad: command not found
 0❯ echo $?
127

显然倒数第二个命令ad没有返回 0 状态码。然而,这就是我从提示中得到的。

有谁知道这里可能会发生什么?

编辑 6/20 上午 11:57:问题似乎$?总是0无论如何,除了.bashrc文件本身存在错误,这将导致它返回一个不同于0.

4

3 回答 3

1

以下内容适用于您的 bash 版本吗?

export PS1="\$?>"
于 2013-07-11T10:17:42.337 回答
0

我在 $PS1 中使用以下内容:

 PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]\$? O_O\[\e[0m\]; fi\`"

来源:https ://github.com/sanmiguel/dotfiles/blob/master/bash/bash_functions.symlink#L63

于 2013-09-13T16:22:41.813 回答
0

我也有类似的问题,但我的功能看起来不同。问题是,我缺少分号“;” 在 VAR=$?

老的:

function status() {
   VAR=$?
   echo $VAR
}

无论如何总是返回零。

新的:

function status() {
   VAR=$?;
   echo VAR;
}

现在返回正确的返回值。

export PS1="\$(status)>"
于 2015-11-22T20:07:39.203 回答