shell中#*,##*,#*,##*,%*,%%*的含义及用法

变量替换

假设我们定义了一个变量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


记忆方法

# 是去掉左边(键盘上#在 $ 的左边)

%是去掉右边(键盘上% 在$ 的右边)

单一个上面的符号是最小匹配

两个上面的符号是最大匹配

你可能感兴趣的:(Shell)