变量替换
假设我们定义了一个变量file=/dir1/dir2/dir3/my.file.txt,使用${ }分别替换,得到不同的变量值:
file=${file#*/},删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
file=${file##*/},删掉最后一个 / 及其左边的字符串:my.file.txt
file=${file#*.},删掉第一个 . 及其左边的字符串:file.txt
file=${file##*.},删掉最后一个 . 及其左边的字符串:txt
file=${file%/*},删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
file=${file%%/*},删掉第一个 / 及其右边的字符串:(空值)
file=${file%.*},删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
file=${file%%.*},删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
记忆方法
是去掉左边(键盘上#在 $ 的左边)
%是去掉右边(键盘上% 在$ 的右边)
单一个上面的符号是最小匹配
两个上面的符号是最大匹配