在Linux Shell中,${}可以被用来处理文件路径字符串。


语法

${[input][rule]},其中input是需要处理的字符串,rule是处理规则,详细规则如下。

#去掉左边字符。

$去掉右边字符。

上面两点很好记忆,键盘上#在左,$在右。

单个符号最小匹配,两个符号最大匹配。

举例

定义file=/dir1/dir2/dir3/my.file.txt

删除

  • ${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt
  • ${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt
  • ${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt
  • ${file##*.}:拿掉最后一个 . 及其左边的字符串:txt
  • ${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3
  • ${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值)
  • ${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
  • ${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

提取

  • ${file:0:5}:提取最左边的 5 个字节:/dir1
  • ${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2

替换

  • ${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt
  • ${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my

====END====