⒌扩展篇:
⑴ 花括号扩展:
{aa,bb,cc}                匹配任一字符串

⑵ 波浪号扩展:
~                        用户的主目录的完全路径名
~qjl                        用户 qjl 的主目录的完全路径名
~+                        当前工作目录的完全路径名
~-                        上一个工作目录
-                        上一个工作目录

⑶ 参数扩展:
${parameter:-word}
如果 parameter 存在并且不为空,就代入 parameter 的值。否则,就代入 word

${parameter:=word}
如果 parameter 存在并且不为空,就代入 parameter 的值。否则,就建立 parameter 并且将它的值设成 word

${parameter:?word}
如果 parameter 存在并且不为空,就代入 parameter 的值。否则,就输出 word 并且从 Shell 退出。如果省略了 word ,就会显示信息“parameter null or not set”

${parameter:+word}
如果 parameter 存在并且不为空,就代入 word 。否则,就什么都不代入(代入空值)

${parameter:offset}
在 parameter 的值中,获取位置从 offset 指定字符开始的子串。偏移为从 0 到串的末尾

${parameter:offset:length}
在 parameter 的值中,获取位置从 offset 指定字符开始的长度为 length 的子串

${!prefix*}


${!prefix@}


${!name[@]}


${!name[*]}

${#parameter}                ${#变量}
替换为变量中的字符个数。如果是 * 或 @ ,长度则是位置参量的个数

${parameter#word}            ${变量#模式}
将变量值的头部与模式进行最小匹配,并将匹配到的部分删除

${parameter##word}        ${变量##模式}
将变量值的头部与模式进行最大匹配,并将匹配到的部分删除

${parameter%word}        ${变量%模式}
将变量值的尾部与模式进行最小匹配,并将匹配到的部分删除

${parameter%%word}        ${变量%%模式}
将变量值的尾部与模式进行最大匹配,并将匹配到的部分删除

${parameter/pattern/string}
在 parameter 中,与 pattern 匹配的最长部分被替换为 string

⑷ 算术扩展:
$(( expression ))            对算术表达式求值并用其结果来替换

⑸ 命令替换:
`command`                用命令的输出替换命令自身
$(command)            用命令的输出替换命令自身

⑹ 单词分割:




⑺ 文件名扩展:
*                    匹配零个或多个字符
?                    匹配一个字符
[abc]                    匹配 a、b、c 这组字符中的一个
[!abc]                    匹配 a、b、c 这组字符以外的某个字符
[a-z]                    匹配在 a 到 z 这个范围内的某个字符
[!a-z]                    匹配不在 a 到 z 这个范围内的某个字符

shopt  -s  extglob

?(pattern-list)    abc?(2|9)1
? 与零个或一个出现在括号中的任意模式相匹配。竖杠代表一个或条件。例如,2 或 9。匹配 abc21、abc91、abc1

*(pattern-list)    abc*([0-9])
* 与零个或多个出现在括号中的任意模式相匹配。匹配 abc 后跟零个或多个数字。例如,abc、abc1234、abc3、abc2 等

+(pattern-list)    abc+([0-9])
+ 与一个或多个出现在括号中的任意模式相匹配。匹配 abc 后跟一个或多个数字。例如,abc3、abc123 等

@(pattern-list)    no@(one|ne)
@ 正好与括号中任一模式相匹配。匹配 noone 或 none

!(pattern-list)    no!(thing|where)
! 与括弧中的任意模式除外的其他所有字符串相匹配。匹配 no、nobody 或 noone,但不能是 nothing 或 nowhere