为什么我的 Bash 提示功能中的退出状态检查也评估为真?

PK

我是 bash 命令和函数的新手。我有两个功能并试图在我的终端中显示它们

git_branch()

highlightExitCode()

这里我想通过export PS1这两个函数来改变提示设置我能够获得分支名称和表情符号,highlightExitCode()但显示的表情符号总是来自 else 并且从不执​​行 if 部分。

有人可以让我知道我在这里做错了什么。

export PS1='[\@][\u] [\W]$(git_branch) $(highlightExitCode)\$ '

git_branch() 
{
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

highlightExitCode()
{
  exit_code=$?
  if [ $exit_code -ne 0 ]
    then
      echo -en '\xf0\x9f\x98\xb1 '
  else
    echo -en '\xf0\x9f\x98\x80 '
  fi
}
切普纳

highlightExitCode正在获取最后一个命令运行的退出状态,这是git_branch在构造提示值时。

PROMPT_COMMAND改为使用动态构建提示。在您的 .bashrc 文件中,

PROMPT_COMMAND=build_prompt

git_branch() 
{
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

highlightExitCode()
{
  if [ "$1" -ne 0 ]; then
    echo -en '\xf0\x9f\x98\xb1 '
  else
    echo -en '\xf0\x9f\x98\x80 '
  fi
}

build_prompt () {
  last_exit=$?
  PS1='[\@][\u] [\W]'
  PS1+=$(git_branch)
  PS1+=" $(highlightExitCode "$last_exit")"
  PS1+='\$ '
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么我感到困惑“当命令在BASH中失败时,退出状态代码为0”

来自分类Dev

为什么我的RegEx在Bash中总是返回“ true”?

来自分类Dev

在某些条件下,为什么我可以在bash中评估“ </ html> $ var </ html>”?

来自分类Dev

为什么`echo bash | bash` 立即退出?

来自分类Dev

* .sorted命令是什么,为什么它在我的bash中不起作用?

来自分类Dev

为什么Bash为我的PATH中的程序给出“没有这样的文件或目录”?

来自分类Dev

为什么我必须输入Enter才能退出bash脚本?

来自分类Dev

为什么我的自定义bash在浏览历史记录时会提示故障

来自分类Dev

为什么我的Bash过滤器功能不起作用?

来自分类Dev

为什么我的Bash脚本没有为该Euler项目返回正确的答案?

来自分类Dev

如果“ java”不在我的路径中,为什么它在终端(bash)中是有效命令?

来自分类Dev

为什么我的命令在shell脚本中不起作用,而在bash中起作用?

来自分类Dev

为什么我不能使用LD_PRELOAD在bash中拦截write(2)?

来自分类Dev

在bash中,为什么我不需要转义嵌套的引号?

来自分类Dev

为什么我在php exec的bash中收到“ sh”调用“ echo $ 0”?

来自分类Dev

为什么我无法在bash脚本中成功导出路径?

来自分类Dev

为什么我可以从cronjob中的Bash脚本创建但不能写入文件?

来自分类Dev

为什么我的bash终端无法在shell中识别任何命令?

来自分类Dev

为什么我从Bash脚本中得到了[[three:command not found]?怎么办呢?

来自分类Dev

为什么-n出现在我的bash测试中[[条件调试输出?

来自分类Dev

为什么我在此bash脚本中始终得到“意外的EOF”?

来自分类Dev

为什么我不能在bash登录外壳中更改PS1?

来自分类Dev

为什么ssh终止我的bash脚本?

来自分类Dev

为什么我的bash脚本挂起?

来自分类Dev

为什么这个bash习语需要评估?

来自分类Dev

为什么这个 if 语句在 bash 中被评估为 true?

来自分类Dev

在bash`i = 0中增加一个变量;ls> $(((++ i)); 回声我= $我; `为什么结果是i = 0

来自分类Dev

为什么我的php HOME环境变量与我的linux bash shell中的HOME变量不匹配?

来自分类Dev

为什么将变量标记为只读会掩盖bash中的退出状态?

Related 相关文章

  1. 1

    为什么我感到困惑“当命令在BASH中失败时,退出状态代码为0”

  2. 2

    为什么我的RegEx在Bash中总是返回“ true”?

  3. 3

    在某些条件下,为什么我可以在bash中评估“ </ html> $ var </ html>”?

  4. 4

    为什么`echo bash | bash` 立即退出?

  5. 5

    * .sorted命令是什么,为什么它在我的bash中不起作用?

  6. 6

    为什么Bash为我的PATH中的程序给出“没有这样的文件或目录”?

  7. 7

    为什么我必须输入Enter才能退出bash脚本?

  8. 8

    为什么我的自定义bash在浏览历史记录时会提示故障

  9. 9

    为什么我的Bash过滤器功能不起作用?

  10. 10

    为什么我的Bash脚本没有为该Euler项目返回正确的答案?

  11. 11

    如果“ java”不在我的路径中,为什么它在终端(bash)中是有效命令?

  12. 12

    为什么我的命令在shell脚本中不起作用,而在bash中起作用?

  13. 13

    为什么我不能使用LD_PRELOAD在bash中拦截write(2)?

  14. 14

    在bash中,为什么我不需要转义嵌套的引号?

  15. 15

    为什么我在php exec的bash中收到“ sh”调用“ echo $ 0”?

  16. 16

    为什么我无法在bash脚本中成功导出路径?

  17. 17

    为什么我可以从cronjob中的Bash脚本创建但不能写入文件?

  18. 18

    为什么我的bash终端无法在shell中识别任何命令?

  19. 19

    为什么我从Bash脚本中得到了[[three:command not found]?怎么办呢?

  20. 20

    为什么-n出现在我的bash测试中[[条件调试输出?

  21. 21

    为什么我在此bash脚本中始终得到“意外的EOF”?

  22. 22

    为什么我不能在bash登录外壳中更改PS1?

  23. 23

    为什么ssh终止我的bash脚本?

  24. 24

    为什么我的bash脚本挂起?

  25. 25

    为什么这个bash习语需要评估?

  26. 26

    为什么这个 if 语句在 bash 中被评估为 true?

  27. 27

    在bash`i = 0中增加一个变量;ls> $(((++ i)); 回声我= $我; `为什么结果是i = 0

  28. 28

    为什么我的php HOME环境变量与我的linux bash shell中的HOME变量不匹配?

  29. 29

    为什么将变量标记为只读会掩盖bash中的退出状态?

热门标签

归档