击:如何检查是否最后三个字符串中的字符等于“***”

问题描述:

我知道如何做到这一点的一个字符:击:如何检查是否最后三个字符串中的字符等于“***”

[ "${filename: -1}" == "*" ] 

是否有可能做更多吗?

+3

'[$文件名= * '***']]'将做的工作。 –

你为什么在-1值停止?

manual pages of bash给出答案:

${parameter:offset} 
${parameter:offset:length} 

如果offset计算结果为数字小于零,该值被用作 一个在字符的值的末端偏移从的参数。如果 length计算结果为数字小于零,它被解释为一个从 参数,而 的不是数字字符的值的末尾中的字符的偏移,并且膨胀是字符offset并且该结果之间 。注意,负offset必须 从结肠由至少一个空间分开,以避免混淆 与“: - ”扩张。

因此

[ "${filename: -3}" == "***" ]