假设我有一个字符串:
x=file.tar.sh
Run Code Online (Sandbox Code Playgroud)
我知道除了最后的n个字符之外如何删除所有内容.像这样(除去最后3个字符的所有内容:
${x: -3}
Run Code Online (Sandbox Code Playgroud)
但这对于具有不同后缀长度的文件不起作用.(len .tar!= len .sh)
我会通过删除所有内容直到最后一个点来解决这个问题.我试过这个:
${x##.}
Run Code Online (Sandbox Code Playgroud)
这将删除最长的匹配,直到"." 但不知何故,它只是返回完整的字符串而不删除任何东西?
尝试这个:
x=file.tar.sh
echo ${x##*.}
Run Code Online (Sandbox Code Playgroud)
这将打印sh
如果你想得到tar.sh,那么:
echo ${x#*.}
Run Code Online (Sandbox Code Playgroud)
这里*匹配出现之前的任何字符集.