在Bash中实现删除字符串最后n个字符

Bash内置了删除字符串指定数量字符的功能,非常简单:

  • 假设字符串变量 $var 内容是 myfile.rtf ,需要删除 .rtf ,则使用:

    var2=${var%.rtf}
    
  • 如果要删除 . 以及之后的字符,则可以使用通配符:

    var2=${var%.*}
    
  • 如果要删除少量字符,可以使用 ? 指代字符,例如要删除最后4个字符,则使用:;

    var2=${var%????}

这里每个 ? 表示一个字符

  • 最新的bash还支持如下方式删除最后4个字符:

    var2=${var:0:${#var}-4}
    

这里 ${#var} 其实就是获得变量 $var 的字符串长度

也可以简写成:

var2=${var::-4}
  • 如果要删除最后哦一个字符,可以采用:

    var2=${var:0:-1}
    

备注

也可以使用 sed 来删除最后的字符(行编辑)

参考