Bash如何获取字符串的倒数第二个字符?

Bash如何获取字符串的倒数第二个字符?,bash,Bash,有一个很好的答案来获取字符串的最后一个字符 str='abcd/' echo "${str: -1}" 如何获得倒数第二名,即返回“d”而不是“/”使用冒号运算符 str='abcd/' echo "${str: -2:-1}" 返回“d”使用冒号运算符 str='abcd/' echo "${str: -2:-1}" 返回“d”正如您已经知道的,负位置相对于字符串的结尾,因此-1从最后一个字符开始,-2从倒数第二个字符开始,依此类推 但是,您使用的形式是获取子字符串的简化形式,它获取从指

有一个很好的答案来获取字符串的最后一个字符

str='abcd/'
echo "${str: -1}"
如何获得倒数第二名,即返回“d”而不是“/”

使用冒号运算符

str='abcd/'
echo "${str: -2:-1}"
返回“d”

使用冒号运算符

str='abcd/'
echo "${str: -2:-1}"

返回“d”

正如您已经知道的,负位置相对于字符串的结尾,因此
-1
从最后一个字符开始,
-2
从倒数第二个字符开始,依此类推

但是,您使用的形式是获取子字符串的简化形式,它获取从指定位置到字符串末尾的所有字符

您还可以提供显式长度,以获取从该位置开始的有限数量的字符。因此,要获取最后一个字符,您只需:

${str: -2:1}

bash
文档的相关部分包括:

${参数:偏移量}

${参数:偏移量:长度}

子串扩展。扩展到从偏移量指定的字符开始的参数值的
长度
个字符

如果省略了
length
,则扩展到参数值的子字符串,从
offset
指定的字符开始,扩展到值的末尾


如您所知,负数位置相对于字符串的结尾,因此
-1
从最后一个字符开始,
-2
从倒数第二个字符开始,依此类推

但是,您使用的形式是获取子字符串的简化形式,它获取从指定位置到字符串末尾的所有字符

您还可以提供显式长度,以获取从该位置开始的有限数量的字符。因此,要获取最后一个字符,您只需:

${str: -2:1}

bash
文档的相关部分包括:

${参数:偏移量}

${参数:偏移量:长度}

子串扩展。扩展到从偏移量指定的字符开始的参数值的
长度
个字符

如果省略了
length
,则扩展到参数值的子字符串,从
offset
指定的字符开始,扩展到值的末尾