这种解析是什么样的?

这种解析是什么样的?

这种论证解析是什么?

$RES="${SOME_VAR##foo/}"  

答案1

${SOME_VAR##foo/}-巴什变量替换。

foo/它从字符串的开头(变量的值)搜索与模式的匹配SOME_VAR,并截断包括模式的左侧部分。

例子:

s="foo/some#foo#textfoo/textlast"
echo ${s##foo/}
some#foo#textfoo/textlast

笔记,这${s##foo/}相当于,因为它只搜索从字符串开头${s#foo/}第一次出现的模式。foo/

虽然这${s##*foo/}会截断左侧部分,直到最后的匹配模式(含)

echo ${s##*foo/}
textlast

答案2

根据man bash

参数扩展
“$”字符引入参数扩展、命令替换或算术扩展。要扩展的参数名称或符号可以用大括号括起来,大括号是可选的,但用于保护要扩展的变量免受紧随其后的字符的影响,这些字符可能被解释为名称的一部分。

${参数#word}
${参数##字}
删除匹配的前缀模式。
该单词被扩展以产生一个模式,就像路径名扩展一样。如果模式与参数值的开头匹配,则扩展的结果是具有最短匹配模式(“#”情况)或最长匹配模式(“##”)的参数扩展值' 案例)已删除。如果参数是@或*,则依次对每个位置参数应用模式删除操作,并且扩展是结果列表。如果parameter是下标为@或*的数组变量,则模式删除操作将依次应用于数组的每个成员,并且扩展是结果列表。

相关内容