Bash 4,扩展和小写

Mat*_*teo 2 bash

我看到在 Bash > 4.0 中变量扩展用于小写变量。例如

echo ${variable,,}
Run Code Online (Sandbox Code Playgroud)

阅读手册页我真的不明白为什么 shell 将字符串转换为小写。

序列表达式采用 {x..y[..incr]} 形式,其中 x 和 y 是整数或单个字符,而 incr 是一个可选增量,是一个整数。当提供整数时,表达式扩展到 x 和 y 之间的每个数字,包括。提供的整数可能以“0”为前缀,以强制每个术语具有相同的宽度。当 x 或 y 以零开头时,shell 会尝试强制所有生成的项包含相同数量的数字,并在必要时填充零。当提供字符时,表达式使用默认的 C 语言环境按字典顺序扩展到 x 和 y 之间的每个字符,包括两个字符。请注意,x 和 y 必须属于同一类型。当提供增量时,它被用作每个术语之间的差异。默认增量为 1 或 -1(视情况而定)。

为什么变量转换为小写?

Ste*_*itt 5

您正在阅读文档的错误部分;改为查看shell 参数扩展

${parameter^pattern}

${parameter^^pattern}

${parameter,pattern}

${parameter,,pattern}

此扩展修改了 中字母字符的大小写parameter。该pattern被膨胀,以产生一个模式,就像在文件名扩展。的扩展值中的每个字符parameter都针对 进行测试pattern,如果与模式匹配,则转换其大小写。该模式不应尝试匹配多个字符。'^' 运算符将匹配模式的小写字母转换为大写;',' 运算符将匹配的大写字母转换为小写字母。'^^' 和 ',,' 扩展转换扩展值中的每个匹配字符;'^' 和 ',' 扩展匹配并仅转换扩展值中的第一个字符。如果pattern省略,则将其视为匹配每个字符的“?”。如果parameter是'@'或'*',大小写修改操作依次应用于每个位置参数,扩展为结果列表。如果parameter是下标有'@'或'*'的数组变量,则依次对数组的每个成员进行大小写修改操作,展开即为结果列表。