原文链接:
https://blog.csdn.net/zhml8951/article/details/51906836
https://www.cnblogs.com/weilanxuesre/p/15991453.html
# 变量:
file=/dir1/dir2/dir3/my.file.txt
变量字符长度
# ${#var}
${#file} #27
删除变量字符串的一部分
# ${var# } ${var## } ${var% } ${var%% }
${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
记忆的方法为:
# 是去掉左边(键盘上#在 $ 的左边)
% 是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
提取变量字符串的一段
# ${var:start:length}
${file:0:5} # 提取最左边的5个字节:/dir1
${file:5:5} # 提取第5个字节右边的连续5个字节:/dir2
${file: -5} # 提取最后5个字节(注意-5前有空格):e.txt
${file:4: -5} # 去掉头部4字节、尾部5个字节(注意-4前有空格):/dir2/dir3/my.fil
${file: -11: -4} # 先取最后11个字节,再去掉最后4个字节(注意都有空格):my.file
对变量值里的字符串作替换
# ${var/ / } ${var// / }
${file/dir/path} # 将第一个dir替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path} # 将全部dir替换为path:/path1/path2/path3/my.file.txt