有一个很好的答案来获取字符串的最后一个字符
str='abcd/'
echo "${str: -1}"
Run Code Online (Sandbox Code Playgroud)
如何获取倒数第二个即返回“d”而不是“/”
正如您似乎已经知道的那样,负位置是相对于字符串末尾的-1,因此从最后一个字符开始,-2从倒数第二个字符开始,依此类推。
但是,您使用的形式是获取子字符串的简化形式,它获取从指定位置到字符串末尾的所有字符。
您还可以提供显式长度来获取从该位置开始的有限数量的字符,因此,要获取倒数第二个字符,您需要的是:
${str: -2:1}
Run Code Online (Sandbox Code Playgroud)
文档的相关部分bash是:
${parameter:offset}
${parameter:offset:length}子串扩展。
length从 指定的字符开始扩展到参数值的最多字符offset。如果
length省略,则扩展为参数值的子字符串,从指定的字符开始,offset一直延伸到值的末尾。