这个基础是否有内置的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有一个黑客攻击?
答案 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
构造就是一种表达它的可移植方式。