示例 : filename = /home/mnt/test.txt
用 ${ } 分别替换获得不同的值:
${filename#*/}:拿掉第一条 / 及其左边的字符串:home/mnt/test.txt
${filename##*/}:拿掉最后一条 / 及其左边的字符串:test.txt
${filename#*.}:拿掉第一个 . 及其左边的字符串:test.txt
${filename##*.}:拿掉最后一个 . 及其左边的字符串:txt
${filename%/*}:拿掉最后条 / 及其右边的字符串:/home/mnt
${filename%%/*}:拿掉第一条 / 及其右边的字符串:空
${filename%.*}:拿掉最后一个 . 及其右边的字符串:/home/mnt/test
${filename%%.*}:拿掉第一个 . 及其右边的字符串:/home/mnt/test
# 是去掉左边(在键盘上 # 在 $ 之左边), % 是去掉右边(在键盘上 % 在 $ 之右边)
单一符号是最小匹配﹔两个符号是最大匹配。
${filename:0:5}:提取最左边的 5 个字节:/home
我们也可以对变量值里的字符串作替换:
${filename/mnt/opt}:将第一个 mnt 提换为 opt:/home/opt/test.txt
${filename//mnt/opt}:将全部 mnt 提换为 opt:/home/opt/test.txt