首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >变量$?不适用于mksh上的$PS1。

变量$?不适用于mksh上的$PS1。
EN

Stack Overflow用户
提问于 2020-02-12 12:18:09
回答 1查看 163关注 0票数 1

我希望我的提示符显示最后一个命令的退出状态,所以我将PS1设置为:

代码语言:javascript
复制
PS1="$? > "

但它总是打印0 >

例如,即使在运行false时,提示符也不会打印1 >或任何退出状态。

为什么会发生这种情况?

编辑:

我尝试使用一个函数来设置我的提示符,测试退出状态是否大于0,所以它不会总是打印0 >,只有当退出状态为非零时。

代码语言:javascript
复制
 promptcmd() {
    _EXIT=$?
    test $_EXIT -gt 0  && printf "\e[1;31m [$_EXIT]"
    printf "\e[0m ❯ "
    unset _EXIT
 }

 PS1="$(promptcmd)"

但它也不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-12 12:21:45

$?是在定义PS1时展开的,因为您使用了双引号。

您可以使用单引号将展开延迟到显示PS1

代码语言:javascript
复制
PS1='$? > '

这种“双展开”不是一般参数的属性,而是shell如何使用PS1值的结果。echo "$PS1"仍将显示文字字符串$? >,但当shell显示提示符时,它将展开在该值中找到的任何参数扩展。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60188189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档