在bash中,将变量扩展为"${var%%r*}"是什么意思?

6

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

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

那么我有一个变量,我不太理解它的含义:

然后我有以下变量,我不太理解:

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

能否详细说明这段代码的作用,以及 pkg_ver 与原始的 ver 值有何关联?

2个回答

11

这是一种 bash参数扩展 语法,用于提取字符串末尾到第一个出现的r字符的文本

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

${PARAMETER%%PATTERN}

这个表单是用来从字符串的末尾尝试匹配并移除所描述的模式。操作符 "%" 会尝试移除最短的匹配模式,而 "%%" 则会尝试移除最长的匹配模式。


2
从变量ver到第一个“r”字符之间的所有内容都将被提取并存储在pkg_ver中。
export ver=aaarrr
echo "${ver%%r*}"
aaa

3
这里完全没有必要使用 export。环境空间是一种有限资源,你所导出到环境中的内容越多(也就是复制进入脚本启动其他程序的起始环境的内容),在启动新进程时可用的最大命令行长度就会变短。 - Charles Duffy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接