【问题标题】:What does expanding a variable as "${var%%r*}" mean in bash? [duplicate]在 bash 中将变量扩展为“${var%%r*}”是什么意思? [复制]
【发布时间】:2017-01-25 19:04:51
【问题描述】:

我在 bash 中设置了以下变量:

ver=$(/usr/lib/virtualbox/VBoxManage -v | tail -1)

然后我有以下我不太了解的变量:

pkg_ver="${ver%%r*}"

谁能详细说明它的作用,以及pkg_ver 与原始ver 值的关系?

【问题讨论】:

    标签: bash variables


    【解决方案1】:

    您将从变量 ver 中获取所有内容,直到第一个“r”字符,并将其存储在 pkg_ver 中。

    export ver=aaarrr
    echo "${ver%%r*}"
    aaa
    

    【讨论】:

    • export 在这里完全没有必要。环境空间是一种有限的资源——您导出到环境中的内容越多(因此复制到脚本启动的其他程序的启动环境中),启动新进程时的最大命令行长度越短。跨度>
    【解决方案2】:

    这是一种bash parameter expansion 语法,用于从字符串末尾提取文本直到第一次出现r

    name="Ivory"
    printf "%s\n" "${name%%r*}"
    Ivo
    

    ${PARAMETER%%PATTERN}

    这种形式是从字符串的末尾删除试图匹配它的描述的模式。运算符 "%" 将尝试删除与模式匹配的最短文本,而 "%%" 尝试使用最长的文本匹配来执行此操作。

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 2012-01-20
      • 2011-11-18
      • 2017-12-27
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 2021-02-11
      相关资源
      最近更新 更多