使用$?在bash函数中
发布时间:2020-12-15 21:17:56 所属栏目:安全 来源:网络整理
导读:我在测试$时遇到问题?在函数内,无论它如何传递. __myretval () { if [ $1 -ne 0 ]; then printf -- "%s" "$1" fi}PS1="$(__myretval '$?') $" 如果它们不是0,那么目标就是显示延迟.该功能比这更详细,它必须在功能中,请不要建议将其拉出功能. $false1 $true$
我在测试$时遇到问题?在函数内,无论它如何传递.
__myretval () { if [ $1 -ne 0 ]; then printf -- "%s" "$1" fi } PS1="$(__myretval '$?') $" 如果它们不是0,那么目标就是显示延迟.该功能比这更详细,它必须在功能中,请不要建议将其拉出功能. $false 1 $true $ 我已经尝试了我能想到的每一种组合,但似乎没有任何效果,包括但不限于以下组合.我试过把这个值放在引号中,没有引号;我已经尝试为0做同样的报价和没有报价. if [ $1 -ne 0 ]; then if [ $1 != 0 ]; then if [ $? -ne 0 ]; then if [ $? != 0 ]; then PS1="$(__myretval "$?") $" PS1="$(__myretval "$?") $" 值始终打印或永不打印. 解决方法
这对我有用:
__myretval () { if (($1)); then printf -- "%s" "$1" fi } PS1='$(__myretval "$?") $' 看来你的问题与引号有关. 当你声明: PS1="$(__myretval '$?') $" 你正在做的是(因为双引号):将PS1设置为函数__myretval的输出,参数为’$?’,其中$?现在扩大了.所以你的PS1永远不会改变. 你想要的是PS1包含字符串: $(__myretval "$?") $ 以便在每个新提示符处展开(评估)此字符串.这就是为什么你应该用单引号来定义你的PS1. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |