检查字符串的最后一个字符

Check last character of a string

提问人:miken32 提问时间:5/30/2017 更新时间:5/30/2017 访问量:1379

问:

这种抨击有内置的 POSIX 等价物吗?

my_string="Here is a string"
last_character=${my_string: -1}

我一直看到这样的东西被推荐,但它们看起来像是黑客。

last_character=$(echo -n "$my_string" | tail -c 1)
last_character=$(echo -n "$my_string" | grep -o ".$")

但是,也许黑客就是我们对 POSIX shell 的全部?

字符串 bash shell sh

评论

0赞 Jack Yuan 12/14/2021
这回答了你的问题吗?符合 POSIX 的 shell 相当于 Bash “while read -d $'\0' ...”?

答:

0赞 Harini 5/30/2017 #1
num=`echo $my_string | wc -c `
let num-=1
last=`echo $my_string | cut -c$num`
echo $last

assumpting: (its lastchar here) 是您需要最后一个字符的字符串。希望这对您有所帮助。

评论

1赞 Benjamin W. 5/30/2017
如果输入字符串包含换行符,则此操作中断。
6赞 zwer 5/30/2017 #2

如果你真的必须这样做,只有POSIX:

my_string="Here is a string"
last_character=${my_string#"${my_string%?}"}

它的作用基本上是从开头删除没有最后一个字符,只剩下最后一个字符。$my_string$my_string

评论

0赞 miken32 5/30/2017
谢谢,仍然是一个黑客,但至少这是一个只有参数扩展的黑客!
0赞 zwer 5/30/2017
@miken32 - 当然是黑客,但胜过管道和调用其他命令。它的通用性要低得多,但这就是 POSIX。
1赞 JooMing 5/30/2017 #3

如果您只需要检查最后一个字符是什么,然后对其值进行操作,那么构造是一种可移植的方式来表达它。case ... esac