用双插入符号进行参数扩展 ^^

rub*_*uck 2 regex bash parameter-expansion

在下面的代码块中,如何评估第 3 行和第 4 行?

for f in "${CT_LIB_DIR}/scripts/build/debug/"*.sh; do
    _f="$(basename "${f}" .sh)"
    _f="${_f#???-}"
    __f="CT_DEBUG_${_f^^}"
done
Run Code Online (Sandbox Code Playgroud)

jer*_*ile 5

${PARAMETER#PATTERN}
Run Code Online (Sandbox Code Playgroud)

子串移除

这种形式是从字符串的开头删除试图匹配它的描述模式。运算符“#”将尝试删除与模式匹配的最短文本,而“##”尝试使用最长的文本匹配来完成。

STRING="Hello world"
echo "${STRING#??????}"
>> world
Run Code Online (Sandbox Code Playgroud)
${PARAMETER^}
${PARAMETER^^}
${PARAMETER,}
${PARAMETER,,}
Run Code Online (Sandbox Code Playgroud)

这些扩展运算符修改扩展文本中字母的大小写。

^运营商修改的第一个字符为大写,该,运营商为小写。使用双格式 ( ^^and ,,) 时,所有字符都会被转换。

例子:

var="somewords"
echo ${var^^}
>> SOMEWORDS
Run Code Online (Sandbox Code Playgroud)

查看更多关于 bash 参数扩展的信息