检查字符串

时间:2017-05-29 18:41:25

标签: string bash shell sh

这个基础是否有内置的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有一个黑客攻击?

3 个答案:

答案 0 :(得分:4)

如果你真的必须只做POSIX:

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

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

答案 1 :(得分:0)

num=`echo $my_string | wc -c `
let num-=1
last=`echo $my_string | cut -c$num`
echo $last

assumpting :(它的lastchar here)是你需要最后一个字符的字符串。希望这有用。

答案 2 :(得分:0)

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