mik*_*n32 5 string bash shell sh
这种 bashism 是否有内置的 POSIX 等价物?
my_string="Here is a string"
last_character=${my_string: -1}
Run Code Online (Sandbox Code Playgroud)
我一直看到推荐这样的东西,但它们看起来像黑客。
last_character=$(echo -n "$my_string" | tail -c 1)
last_character=$(echo -n "$my_string" | grep -o ".$")
Run Code Online (Sandbox Code Playgroud)
但是,也许我们对 POSIX shell 拥有的只是一个 hack ?
如果你真的必须这样做 POSIX:
my_string="Here is a string"
last_character=${my_string#"${my_string%?}"}
Run Code Online (Sandbox Code Playgroud)
它所做的基本上是$my_string从 的开头删除它的最后一个字符$my_string,只留下最后一个字符。