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?
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With