miken32
miken32

Reputation: 42720

Check last character of a string

Is there a built-in POSIX equivalent for this bashism?

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

I keep seeing things like this recommended, but they seem like hacks.

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

But, maybe a hack is all we have with POSIX shells?

Upvotes: 5

Views: 1994

Answers (3)

zwer
zwer

Reputation: 25789

If you really have to do it POSIX only:

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

What it does is essentially removing $my_string sans its last character from the beginning of the $my_string, leaving you with only the last character.

Upvotes: 7

JooMing
JooMing

Reputation: 932

If you just need to check what is the last character and then act on its value, then the case ... esac construct is a portable way to express it.

Upvotes: 1

Harini
Harini

Reputation: 571

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

assumpting: (its lastchar here) is the string for which u need the last charactor for. Hope this is helpful.

Upvotes: 0

Related Questions