加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用$?在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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读