如何识别字符串的最后一个字符 - 字符或数字?

How to identify last character of string - A character or number?

我想识别字符串的最后一个字符,我正在使用以下方法访问最后一个字符:

echo "${VAR: -1}"

如果是字符,我想在字符前加一个.(点),如果是数字,什么也不做。

expr match ${VAR: -1} '.*[0-9]' >/dev/null || VAR="${VAR:0:`expr ${#VAR} - 1`}.${VAR: -1}"

解释:

expr match ${VAR: -1} '.*[0-9]' >/dev/null    

第一个表达式returns如果最后一个字符是数字则为1

VAR="${VAR:0:`expr ${#VAR} - 1`}.${VAR: -1}"

如果表达式 returns 1 那么该行的其余部分将 var 分配给 var 中的所有字符,直到但不包括最后一个字符,附加一个“.”字符,并附加最后一个字符。