比方说,我有一个字符串:删除一切,但文件扩展名
x=file.tar.sh
我知道如何删除一切,但最后n个字符。像这样(去除一切,但最后3个字符:!
${x: -3}
但是,这并不具有不同后缀的长度文件的工作(LEN的.tar = LEN .SH)
我会通过删除解决这个。一切直到最后点我已经试过这样:“”?
${x##.}
这消除了最长匹配,直到但不知何故,它只是返回完整的字符串没有消除任何
比方说,我有一个字符串:删除一切,但文件扩展名
x=file.tar.sh
我知道如何删除一切,但最后n个字符。像这样(去除一切,但最后3个字符:!
${x: -3}
但是,这并不具有不同后缀的长度文件的工作(LEN的.tar = LEN .SH)
我会通过删除解决这个。一切直到最后点我已经试过这样:“”?
${x##.}
这消除了最长匹配,直到但不知何故,它只是返回完整的字符串没有消除任何
试试这个:
x=file.tar.sh
echo ${x##*.}
这将打印sh
如果你想获得tar.sh
,则:
echo ${x#*.}
这里*
匹配任何字符集的.
发生前你的任务是错误的应该是这个'x = file.tar.sh' – Azad
你似乎误解了什么'$ {x# #。}'应该做的。由于给定的模式只匹配单个文字字符串,因此它只会移除一个前导句点,并且与'$ {x#。}'完全相同。 – chepner