Is there any way to make the cut command read the last field only?

No cut can't do that. You could use two rev commands, like

echo 'foo bar baz' | rev | cut -d' ' -f1 | rev

but it's usually easier to use awk:

echo 'foo bar baz' | awk '{print $(NF)}'

You can do this using only shell, no external tool is needed, using Parameter Expansion:

${var##* }

var##* will discard everything from start up to last space from parameter (variable) var.

If the delimiter can be any whitespace e.g. space or tab, use character class [:blank:]:

${var##*[[:blank:]]}

Example:

$ var='foo bar spam egg'

$ echo "${var##* }"
egg


$ var=$'foo\tbar\tspam\tegg'

$ echo "$var"
foo    bar    spam    egg

$ echo "${var##*[[:blank:]]}"
egg

I personally like Florian Diesch answer. But there is this way too.

a=$(echo "your string here" | wc -w)
echo "your string here" | cut -d' ' -f$a

Explanation:

wc -w gives the number of words. and cut cuts the last word

EDIT:

I figured another way of Doing it:

echo "Any random string here" | tac -s' ' | head -1