【发布时间】:2017-01-25 19:04:51
【问题描述】:
我在 bash 中设置了以下变量:
ver=$(/usr/lib/virtualbox/VBoxManage -v | tail -1)
然后我有以下我不太了解的变量:
pkg_ver="${ver%%r*}"
谁能详细说明它的作用,以及pkg_ver 与原始ver 值的关系?
【问题讨论】:
我在 bash 中设置了以下变量:
ver=$(/usr/lib/virtualbox/VBoxManage -v | tail -1)
然后我有以下我不太了解的变量:
pkg_ver="${ver%%r*}"
谁能详细说明它的作用,以及pkg_ver 与原始ver 值的关系?
【问题讨论】:
您将从变量 ver 中获取所有内容,直到第一个“r”字符,并将其存储在 pkg_ver 中。
export ver=aaarrr
echo "${ver%%r*}"
aaa
【讨论】:
export 在这里完全没有必要。环境空间是一种有限的资源——您导出到环境中的内容越多(因此复制到脚本启动的其他程序的启动环境中),启动新进程时的最大命令行长度越短。跨度>
这是一种bash parameter expansion 语法,用于从字符串末尾提取文本直到第一次出现r
name="Ivory"
printf "%s\n" "${name%%r*}"
Ivo
${PARAMETER%%PATTERN}
这种形式是从字符串的末尾删除试图匹配它的描述的模式。运算符 "%" 将尝试删除与模式匹配的最短文本,而 "%%" 尝试使用最长的文本匹配来执行此操作。
【讨论】: