【发布时间】:2015-07-22 05:06:07
【问题描述】:
假设我有一个字符串:
x=file.tar.sh
我知道如何删除除最后 n 个字符之外的所有内容。像这样(删除除最后 3 个字符之外的所有内容:
${x: -3}
但这不适用于具有不同后缀长度的文件。 (len .tar != len .sh)
我会通过删除直到最后一个点的所有内容来解决这个问题。我试过这个:
${x##.}
这会删除最长的匹配,直到 "."但不知何故,它只是返回完整的字符串而不删除任何内容?
【问题讨论】:
-
你的分配错误应该是这个
x=file.tar.sh -
您似乎误解了
${x##.}应该做什么。这只会删除一个前导句点,并且与${x#.}相同,因为给定的模式仅匹配单个文字字符串。